我正在尝试推迟加载我的主控制器/模板(AppController),直到我从服务加载用户配置文件。
对于所有导航路线,我使用$ routeProvider with resolve
.when('/edit/:editId', {
templateUrl: 'editTemplate.html',
controller: 'EditController' // this is a child controller of AppController
resolve: {
currentUser: ['svc.user', function(userSvc) { return userService.getUser(); }]
}
// and so on..
但对于我正在使用的AppController
如何解决AppController问题?本质上,我想要一个userService.getUser(),它返回一个承诺,在AppController实际运行之前完成执行,我不知道如何使用ng-init执行此操作(或者如果可能,我认为只有表达式不承诺可以执行)。
感谢您提供任何帮助/协助。
答案 0 :(得分:1)
如本视频所示:http://egghead.io/video/angularjs-resolve/
你应该尝试:
.when('/edit/:editId', {
templateUrl: 'editTemplate.html',
controller: 'EditController' // this is a child controller of AppController
resolve: {
currentUser: ['svc.user', function(userSvc) { return userService.getUser(); }]
app: function ($q) {
var defer = $q.defer();
defer.resolve();
return defer.promise;
}
}