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 に答える