这是我在angularjs 1.5.5中写的代码:
export default angular.module(
'myApp', [])
.provider('finder', function finderProvider() {
this.$get = $get;
function $get() {
console.log('GET');
}
this.callMe = () => {
console.log('CALLED');
};
})
.config(['finderProvider', function(finderProvider) {
//finderProvider.$get();
finderProvider.callMe();
}])
.name;
我之后尝试将服务注入此提供程序。我在文档中读到,我只能使用$ get()方法在提供程序中注入服务。但是,我无法自动调用$ get()。我能做到这一点的唯一方法是在我评论调用的部分中手动调用$ get()。但是我手动调用$ get似乎并不合适。
在这个例子中只有“CALLED'正在登录。知道我在这里失踪的是什么吗?
EDIT。我尝试使用箭头函数使用另一种语法,但得到了相同的结果:
.provider('finder', () => {
return {
$get: () => {
console.log('GET');
},
callMe: () => {
console.log('CALLED');
}
};
})
提前致谢。
答案 0 :(得分:2)
角度服务被懒惰地实例化。
在配置阶段(config
阻止或其他提供程序)注入服务提供程序构造函数时,将调用该函数。
$get
。
在上面的示例中,finder
服务未在任何地方注入,服务实例未创建且$get
功能未被调用。