2016-06-30 2 views
1

Этот код сценария кофе пытается создать углового провайдера, но я получаю это сообщение: «ItemsProvider поставщика» должен определить метод $ get factory.

У меня есть метод $ get method. Любая идея о том, что происходит?

'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