bootstrap AngularJS 使用 angularAMD 的异步数据服务
bootstrap AngularJS service with asynchronous data using angularAMD
我遇到的问题与此问题 (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
这是我试图实现的方法:
编辑 2
添加更多信息:我有一个 webapi 作为后端,它是一个遗留系统,提供设置应用程序所需的各种业务规则。目前提供的主要信息有:
- 我使用 $translateProvider(http://angular-translate.github.io) 动态加载当前文化的词典。所有的课文都应该取自这本词典。
- 我有一项服务可以监控所有路由更改并根据返回的规则允许或限制访问。
- 有些信息应该根据规则放在屏幕上。这些信息都封装在初始 html.
上的指令中
- 一些 html 控件也可能根据规则显示或不显示。
确实没有简单或优雅的出路。我最终做了以下事情:
- 开始使用 ui-router(https://github.com/angular-ui/ui-router) 而不是 ngRoute;
- 创建了根抽象状态,所有其他状态的父级;
- 在任何控制器实例化之前使用根状态的解析部分加载所有需要的数据
我遇到的问题与此问题 (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
这是我试图实现的方法:
编辑 2
添加更多信息:我有一个 webapi 作为后端,它是一个遗留系统,提供设置应用程序所需的各种业务规则。目前提供的主要信息有:
- 我使用 $translateProvider(http://angular-translate.github.io) 动态加载当前文化的词典。所有的课文都应该取自这本词典。
- 我有一项服务可以监控所有路由更改并根据返回的规则允许或限制访问。
- 有些信息应该根据规则放在屏幕上。这些信息都封装在初始 html. 上的指令中
- 一些 html 控件也可能根据规则显示或不显示。
确实没有简单或优雅的出路。我最终做了以下事情:
- 开始使用 ui-router(https://github.com/angular-ui/ui-router) 而不是 ngRoute;
- 创建了根抽象状态,所有其他状态的父级;
- 在任何控制器实例化之前使用根状态的解析部分加载所有需要的数据