角度提供程序错误 - 必须定义$ get factory方法

时间:2016-06-30 18:43:03

标签: javascript angularjs coffeescript angularjs-provider

这个咖啡脚本代码试图创建一个角度提供者,但我收到了这样的信息:Provider' ItemsProvider'必须定义$ get factory方法。

我设置了$ get方法。知道发生了什么事吗?

'use strict'

    app = angular.module('logica-erp') 

    app.provider 'ItemsProvider', [ ->

        this.$get = ->
                return {

                }

    ]

无法加载此消息:

Error: [$injector:modulerr] Failed to instantiate module logica-erp due to:
[$injector:pget] Provider 'ItemsProvider' must define $get factory method.

修改 这是生成的javascript:

(function() {
  'use strict';
  var app;

  app = angular.module('logica-erp');

  app.provider('ItemsProvider', [
    function() {
      return this.$get = function() {
        return {};
      };
    }
  ]);

}).call(this);

1 个答案:

答案 0 :(得分:1)

CoffeeScript引入了语法糖涂层,读者和专家可能都很难理解。将它编译为JS以查看正在进行的操作总是一个好主意。隐性回报似乎是我实践中最大的麻烦制造者。

在这种情况下,CS代码被编译为

app.provider('ItemsProvider', [
  function() {
    return this.$get = function() {
      return {};
    };
  }
]);

这里,provider构造函数返回值this.$get(函数)而不是this对象。构造函数不应该返回任何东西(除了罕见的情况):

app.provider('ItemsProvider', [
  function() {
    this.$get = function() {
      return {};
    };
  }
]);

小心箭头。