2016-01-21 39 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框架。根据你的回复和其他人的评论,显然它没有。 –

相关问题