【发布时间】:2013-03-26 09:38:55
【问题描述】:
我正在尝试推迟加载我的主控制器/模板 (AppController),直到我从服务加载用户配置文件。
对于所有导航路线,我使用 $routeProvider 和 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 来执行此操作(或者如果可能,我认为只有表达式不是承诺可以被执行)。
感谢您的任何帮助/协助。
【问题讨论】:
-
观看此视频egghead.io/video/angularjs-resolve 并在此处查看有关您的确切问题的良好演示:github.com/johnlindquist/angular-resolve
-
感谢 charlietfl - 所以我需要隐藏的“应用程序”承诺。谢谢!
-
no...应该解决服务的承诺。看看演示中是如何完成的:github.com/johnlindquist/angular-resolve/blob/master/client/js/…
-
是的,但是我发现你也可以在里面放一个模块。因此,在他们的情况下,他们将引用传递给 app.在我的代码中,我使用带有 requirejs 的缩小代码,所以我使用的是字符串文字。所以我有一个“app.core”模块。我使用 'app.core' : { // resolve stuff } 确保当它获得核心时,它也会缓存用户......除非我完全错了?!?希望不要
标签: angularjs