1

此咖啡脚本代码正在尝试创建一个角度提供程序,但我收到此消息:提供程序 'ItemsProvider' 必须定义 $get 工厂方法。

我设置了 $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);
4

1 回答 1

2

CoffeeScript 引入了语法糖衣,读者和专家可能都很难理解。将其编译为 JS 以查看发生了什么总是一个好主意。在我的实践中,隐性回报似乎是最大的麻烦制造者。

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

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

这里提供者构造函数返回this.$get(一个函数)的值而不是this对象。构造函数不应该返回任何东西(除了极少数情况下应该返回):

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

当心箭头。

于 2016-06-30T19:54:56.200 回答