在Angular JS中使用ui-router时,可以在onEnter回调中注入哪些依赖项?具体来说,我想使用$ http服务和父模块中定义的常量。我正在使用的代码定义了模块配置中的ui-router状态;我知道我不能在配置代码中使用服务,但也许可以在配置代码定义的回调中使用它们?无论如何,以下代码似乎有效;我只是担心它可能不可靠。我猜 真正的问题是,什么时候注入依赖?这是在定义函数时还是在调用函数时发生的?
angular.module('sim', ['ui-router']).
constant('ENV', {
BASE_URL: '/simulation/secure'
}).
config(config);
function config($stateProvider) {
$stateProvider
.state('root.training', {
url: '/training',
controller: 'trainingCtrl',
onEnter: function($http,ENV)
{
$http.get(ENV.BASE_URL + '/setIsRunning');
}
});
};
答案 0 :(得分:0)
调用函数时会注入依赖项。查看source code of ui-router时,在状态转换期间调用onEnter
- 回调,此时转换正在考虑entering
。调用onEnter
- 回调是使用Angulars $injector.invoke()
函数完成的,该函数根据angular documentation解析$injector
中的所有依赖项并调用该方法。因此,任何依赖都应该在onEnter
中使用。