2015-02-10 96 views
0

我在Angular中遇到類問題。 當我試圖創造一些類控制器,我看到這個錯誤:爲什麼@用_at_替換? (CoffeeScript)

Error: [$injector:unpr] Unknown provider: _at_$scopeProvider <- _at_$scope <- MainController 

類代碼:

class MainController 
    constructor: (@$scope, @$log) -> 
     @timestamp = Date.now() - 900000 

angular 
    .module 'app' 
    .controller 'MainController', MainController 

結果我有這樣的:

(function() { 
    var MainController; 

    MainController = (function() { 
    function MainController(_at_$scope, _at_$log) { 
     this.$scope = _at_$scope; 
     this.$log = _at_$log; 
     this.timestamp = Date.now() - 900000; 
    } 

    return MainController; 

    })(); 

    angular.module('app').controller('MainController', MainController); 

}).call(this); 

什麼問題?

回答

1

您已更新至咖啡版本1.9。屬性參數的命名有一個不兼容的變化。看到我對this other question的回答,它會影響到你。由於您使用的是角度,因此您可以使用數組符號進行注射。如果你想縮小/醜化你的代碼,這是唯一的方法來獲得注射權,因此我建議總是這樣做。

無論是這樣的:

class MainController 
    constructor: (@$scope, @$log) -> 
     @timestamp = Date.now() - 900000 

angular 
    .module 'app' 
    .controller 'MainController', ['$scope', '$log', MainController] 

或像這樣:

MainCtrlWithInjects = ['$scope', '$log', 
    class MainController 
    constructor: (@$scope, @$log) -> 
     @timestamp = Date.now() - 900000 
    ] 

angular 
    .module 'app' 
    .controller 'MainController', MainCtrlWithInjects