我在角度应用程序的HTTP
部分发送app.run
请求。但问题是使用$rootScope.projects
的控制器是在创建$rootScope.projects
并由HTTP
请求填充之前启动的。
如果$rootScope.projects
未定义,我该如何阻止控制器加载?
以下是我的HTTP
请求:
$http({method : 'GET', url:'https://api.parse.com/1/classes/Project',
headers: { 'X-Parse-Application-Id':ParseID, 'X-Parse-REST-API-Key':ParseREST}})
.success(function(res) {
$rootScope.projects = res.results;
})
.error(function(err) {
console.log(err);
$rootScope.projects = [];
});
答案 0 :(得分:0)
使用ng-controller
时无法控制控制器实例化时间。使用一次性手表
var initWatcher = $rootScope.$watch('projects', function (newVal, oldVal) {
if (newVal !== oldVal) {
initWatcher();
// init further
}
})
在控制器中 - 或者发出' init' $ rootScope上的事件并听取它。
如果是ngRoute / ui-router,您可以使用路由' resolve
,这完全适用于此类事情。