我的路线定义如下:
.state('user_login', {
url: '/user/login',
templateUrl: 'login.tpl.html',
controller: 'AuthenticationCtrl',
resolve: {
practice: ['$q', function($q) {
return $q.when({});
}]
}
})
当我将“练习”注入控制器时,事情按预期进行。当我使用$ injector时,服务如下:
$injector.get('practice')
我收到一个未知的提供程序异常。解析对象是否对$ injector不可用?我如何在控制器中公开它们而不显式地将它们注入控制器定义中?
注意:我正在使用Angular 1.2.x
不,您不能通过单独获取它们$injector
。而且,您甚至无法在其他地方分别注入它们,例如,AuthenticationCtrl
用ng-controller
指令实例化的同一控制器()。
解析对象不是可以单独注入的任何服务或任何其他实体。当AuthenticationCtrl
通过路由器绑定控制器时,这是路由器注入的特殊依赖项。您无法单独获取实例。只有路由器知道有关决心属性和而路由器实例化控制器(一旦所有的解决依赖得到解决),它会在注释(通过显性/隐性依赖注释中的definision指定的依赖列表的决心性质AuthenticationCtrl
)的路由绑定的控制器,并根据需要注入它们。
这种特殊的实现方式可以在其他组件中找到,例如angular-ui-modal,ui-state-router,angular-router的routeprovider等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句