0

我有一个问题与这个问题中暴露的问题非常相似(AngularJS:Initialize service with asynchronous data)。我的不同之处在于我使用 angularAMD 异步加载脚本,而我无法在以下 app.config 中使用上述方法:

define(['angularAMD'], function (angularAMD) {
   var app = angular.module('app', []);
   app.config(['$routeProvider', function ($routeProvider) {
     // some code here
   }]);
   app.run(['srvRules', function (srvRules) {
     srvRules.getRules().then(function (result) {
        // I need to bootstrap only after I get the rules from the server
      });
   }]);
   return angularAMD.bootstrap(app);
});

编辑 1

这是我试图完成的方法:https ://stackoverflow.com/a/21189057/2407203

编辑 2

添加更多信息:我有一个 webapi 作为后端,它是一个遗留系统,它提供了设置应用程序所需的各种业务规则。目前提供的主要信息有:

  1. 我使用 $translateProvider( http://angular-translate.github.io ) 以动态方式加载具有当前文化的字典。所有文本都应取自这本词典。
  2. 我有一项服务可以监视所有路由更改并根据返回的规则允许或限制访问。
  3. 一些信息应该根据规则放置在屏幕上。这些信息都封装在初始 html 的指令中。
  4. 一些 html 控件可能会根据规则出现或不显示。
4

1 回答 1

0

真的没有简单或优雅的出路。我最终做了以下事情:

  1. 开始使用 ui-router ( https://github.com/angular-ui/ui-router ) 而不是 ngRoute;
  2. 创建了一个根抽象状态,所有其他状态的父级;
  3. 使用根状态的解析部分在任何控制器实例化之前加载所需的所有数据
于 2015-02-05T20:07:23.273 回答