2016-06-30 52 views
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); 

回答

1

CoffeeScript的介紹可知之甚少語法糖衣由讀者和熟練人士。把它編譯成JS來看看發生了什麼總是一個好主意。隱性回報似乎是我實踐中最大的麻煩製造者。

在這種情況下CS代碼編譯爲這個

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

這裏提供商構造函數返回的this.$get的值(函數),而不是this對象。構造函數不應該返回任何東西(除非是極少數情況):

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

小心箭頭。

+0

謝謝,隱式返回問題 –

+0

您能否提供編譯爲第二個代碼段的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%20this。%24get%20%3D%20function%28%29%20 {%0A%20%20%20%20%20%20return%20 {}%3B%0A%20%20 %20%20}%3B%0A%20%20}%0A]%29%3B) – estus

相關問題