$routeProvider resolve
参数可以允许向控制器函数注入其他依赖项。 如何将其与显式依赖注入声明相结合?
Ecample:
angular.module('myModule', [])
.config(function($routeProvider) {
$routeProvider.
when('/tabOne', { templateUrl : 'tabOne.html', controller: TabOne,
resolve: {
someDependency: SomeDependency.factoryFunction
}
});
});
然后:
TabOne.$inject = [ '$scope', 'someFirstService', 'someOtherService' ];
如您所见,上面的DI声明会向我的TabOne
控制器(someFirstService
和someOtherService
注入两个服务。这两个工作正常,但我希望我的路线只有在someDependency
解决并注入TabOne
后才能更改。如果我只是将someDependency
添加到Controller函数的参数列表中,则会因DI错误而失败。
任何想法如何做到这一点?
答案 0 :(得分:0)
首先,你的控制器是否需要等到依赖关系在被调用之前被解析,或者它是否真的需要SomeDependency.factoryFunction的解析值?
似乎案件就是后者:你想要解决价值。
在这种情况下,一种可行的方法是拥有两个TabOne控制器。
angular.module('myModule', [])
.config(function($routeProvider) {
$routeProvider.
when('/tabOne', { templateUrl : 'tabOne.html', controller: TabOneRouted,
resolve: {
someDependency: SomeDependency.factoryFunction
}
});
});
function TabOne($scope, someFirstService, someOtherService) {
... code here ...
}
function TabOneRouted($scope, someFirstService, someOtherService, someDependency) {
TabOne($scope, someFirstService, someOtherService);
... your code dealing with someDependency here ...
}