无法在angularjs提供程序中自动调用$ get方法

时间:2016-06-06 18:36:46

标签: angularjs dependency-injection get provider

这是我在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');
      }
    };
  })

提前致谢。

1 个答案:

答案 0 :(得分:2)

角度服务被懒惰地实例化。

在配置阶段(config阻止或其他提供程序)注入服务提供程序构造函数时,将调用该函数。

在配置阶段之后注入服务实例时会调用

$get

在上面的示例中,finder服务未在任何地方注入,服务实例未创建且$get功能未被调用。