2016-01-21 61 views
1

新建角,我試圖按照JSLint的(由Douglas Crockford的書面)的JS都沒有使用this的建議。如何不在Angular中使用'this'?

如何防止自己的角度使用this?到目前爲止,我所見過的所有教程都依賴於使用this,SO搜索導致無法回答。

對於被清晰的目的,讓我們假設我試圖寫該控制器:

app.controller('StoreController', function() { 
    this.products = {}; 
}); 

我如何可以訪問的控制對象,以便我可以添加products財產?

var my_controller = app.controller('StoreController', function() { 
}); 
my_controller.products = {}; // Maybe like this? 
+3

角度(和大多數其他框架)將不適用於該建議。 – SLaks

+1

首先,'this'不用於標準控制器。您使用'$ scope',將'$ scope'注入到控制器中並獨佔使用它。我唯一一次使用'this'是在服務中。 – DataHerder

+2

只要您適當地使用'this',沒有什麼問題。 –

回答

2

進樣$scope,例如:

app.controller('StoreController', function($scope) { 
    $scope.products = {}; 
}); 

這裏有更多關於他們的信息:https://docs.angularjs.org/guide/scope


而且,使用像服務時,你能避免this通過保持本地狀態並返回一個接口對象。例如:

.service('MyService', function(){ 
    // state 
    var mystate = {}; 

    // interface object 
    return { 
     someExposedFunc: function(){ 

     } 
    }; 
}); 

我只想不過請注意,我看不出有什麼好的理由,爲什麼你應該使用的角度時,爲了避免this。我認爲使用$scope在讀取控制器代碼時有更多的語義用處,但在使用諸如服務之類的東西時,我通過創建諸如this.somefunc = ...之類的公開函數來編寫較少的代碼。

+0

感謝您的快速回復。在JS中,他有充分的理由不使用'this'。我曾假設它適用於Angular或任何其他JS框架。根據你的回覆和其他人的評論,顯然它沒有。 –

相關問題