如果未定义 $rootScope.projects,则阻止控制器启动



我正在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,它正是为这些事情而设计的。

最新更新