javascript - Angular 提供者错误 - 必须定义 $get 工厂方法

标签 javascript angularjs coffeescript angularjs-provider

此 CoffeeScript 代码正在尝试创建一个 Angular 提供程序,但我收到此消息:提供程序“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);

最佳答案

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

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

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

此处提供程序构造函数返回 this.$get 值(函数),而不是 this 对象。构造函数不应返回任何内容(除了极少数情况下应返回的内容):

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

小心箭头。

关于javascript - Angular 提供者错误 - 必须定义 $get 工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38130968/

相关文章:

javascript - Jquery .html() 不工作 - 选择 html

javascript - 在 Javascript 中使用 indexOf 将变量类型编号与数组进行比较

javascript - 成功提交时显示 Bootstrap 的警报

javascript - 如何使 Angular 仅显示可用的数据

javascript - 如何处理 Angular 中对象属性的变化?

javascript - 如何从指令元素中删除 Angular 观察器?

javascript - Coffeescript 翻译 - 嵌套 for 循环

javascript - 使用 jquery ui 自动完成但样式隐藏

javascript - 在 Codepen 中工作的 JS 在我的 html 页面上不起作用

javascript - 处理许多 DOM 更改