我正在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 = [];
});
使用 ng-controller
时无法控制控制器实例化时间。使用一次性手表
var initWatcher = $rootScope.$watch('projects', function (newVal, oldVal) {
if (newVal !== oldVal) {
initWatcher();
// init further
}
})
in 控制器 - 或在$rootScope上发出"init"事件并侦听它。
如果是ngRoute/ui-router的情况,你可以使用route的resolve
,它正是为这些事情而设计的。