【发布时间】:2014-04-03 17:25:26
【问题描述】:
在我的 Angular.js 应用程序中,我遇到了这样的问题。我有一个名为user 的服务,我在app.run 上调用它来从服务器获取用户数据,如下所示:
app.run(function (user, tracking) {
user.initialize();
... // some other code goes here..
});
这只是调用 API 路由并创建 $rootScope.user 以供所有应用程序使用。
但不知何故,控制器有时加载速度比初始化速度快.. 并且其中的 $rootScope 不包含 user 对象。
function SomeController($scope, $rootScope, $routeParams) {
console.log($rootScope.user.name);
// sometimes returns error -
// TypeError: Cannot read property 'name' of undefined
}
那么我如何才能在初始化为$rootScope 顺利之后才强制加载所有控制器。我不想在每个控制器的用户上添加$watch .. 因为它看起来像一个错误的决定并且使代码变得丑陋。
您的建议?谢谢!
【问题讨论】:
-
你使用
ngRoute吗?因为上面有resolve,你可以使用它。 -
@IqbalFauzi 是的,我使用
ngRoute。这是否意味着我需要在每个控制器上的resolve内调用user.initialize()?
标签: javascript angularjs controller scope rootscope