配置功能期间服务范围如何?

时间:2013-09-08 00:47:18

标签: angularjs angular-services

我通过帖子

很好地阅读了这篇文章

What "things" can be injected into others in Angular.js?

并且好奇,因为我被告知使用resolve属性来制作xhr并使用服务来帮助这些调用。此代码中的resolve属性如何工作?在什么时候调用$ injector?

app.config(function($stateProvider){
  $stateProvider
    .state("eventIndex", {
      url: "/events", 
      views: {
        "main": {
          controller: "EventsCtrl",
          templateUrl: "assets/events/index.html"
        }
      },
      resolve: {
        events: ['EventService', function(Event){
                  return Event.allEvents()
                  }
                ]
       }
    });
});

1 个答案:

答案 0 :(得分:1)

如果您的问题是:$injector要调用哪部分代码?

答案: config函数,events函数(虽然这在技术上声明为代码中的数组,但从AngularJS的角度来看,它是一个带注释的函数),以及EventsCtrl功能。

如果您的问题是:何时调用resolve()方法?

答案: ui-router首先触发$stateChangeStart,您有机会取消导航;如果没有,它将尝试通过调用resolve来解决在$injector.invoke()中声明的所有对象并取回承诺(如果没有,它们将被包含在承诺中)。

一旦所有承诺得到解决(或拒绝),ui-router用户$injector就会在解雇onExit之前调用先前状态的onEnter和当前状态的$stateChangeSuccess (或拒绝时为$stateChangeError)。

ui-view指令侦听$stateChangeSuccess以加载视图,使用$controller提供程序实例化控制器(内部使用$injector.instantiate,后者又使用$injector.invoke ,创建控制器实例)。