2016-06-30 22 views
1

このコーヒースクリプトコードは角度プロバイダを作成しようとしていますが、このメッセージが表示されます。プロバイダ '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. 

EDIT: これは生成されるJavaScriptである:

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

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

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

}).call(this); 

答えて

1

のCoffeeScriptはあまり理解されてもよい構文糖衣を紹介読者と熟達者の両方によって。何が起こっているのかを見るためにJSにコンパイルするのは良い考えです。私の練習では、暗黙のリターンが最大の苦労者のようです。

この場合、CSコードは、ここで提供コンストラクタ関数はthis.$getの値(関数)としないthisオブジェクトを返すこの

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

にコンパイルされます。コンストラクタ関数は何も返さないはずです(まれな場合を除いて):

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

矢印に注意してください。

+0

ありがとう、暗黙の返信の問題 –

+0

2番目のスニペットにコンパイルするCoffeeScriptコードを提供できますか? – cjbrooks12

+0

@ cjbrooks12私はコーヒーを話しません。幸いにも、[翻訳サービス](http://js2.coffee/#try:app.provider%28%27ItemsProvider%27%2C%20 [%0A%20%20function%28%29%20 {%0A 20%20%20%20%20%20%30%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% %20%20%%3B%0A%20%20%%0A]%29%3B) – estus

関連する問題