Angular控制器声明中的流星箭头功能
Angular Meteor arrow function in controller declaration
我正在关注 this Angular-Meteor tutorial。还有这样的代码片段:
angular.module('socially').directive('partiesList', function () {
return {
restrict: 'E',
templateUrl: 'parties-list.html',
controllerAs: 'partiesList',
controller: function ($scope, $reactive) {
$reactive(this).attach($scope);
this.newParty = {};
this.helpers({
parties: () => {
return Parties.find();
}
});
this.addParty = () => {
Parties.insert(this.newParty);
this.newParty = {};
};
this.removeParty = (party) => {
Parties.remove({_id: party._id});
};
}
};
});
我主要关心 () => {}
语法。如果我在控制器声明中使用箭头函数语法,它不起作用:
...
controller: ($scope, $reactive) => { //this does not work
$reactive(this).attach($scope);
this.newParty = {};
this.helpers({
parties: () => {
return Parties.find();
}
});
...
谁能解释一下什么时候可以使用箭头功能什么时候不能?
它不起作用,因为箭头函数不像常规函数那样创建新的 this
上下文,而是使用父函数的上下文。
在定义控制器时,它很重要,而在定义助手时则无关紧要。
更详细的回答你也可以看这里:https://github.com/Urigo/angular-meteor/issues/965#issuecomment-165916592
我正在关注 this Angular-Meteor tutorial。还有这样的代码片段:
angular.module('socially').directive('partiesList', function () {
return {
restrict: 'E',
templateUrl: 'parties-list.html',
controllerAs: 'partiesList',
controller: function ($scope, $reactive) {
$reactive(this).attach($scope);
this.newParty = {};
this.helpers({
parties: () => {
return Parties.find();
}
});
this.addParty = () => {
Parties.insert(this.newParty);
this.newParty = {};
};
this.removeParty = (party) => {
Parties.remove({_id: party._id});
};
}
};
});
我主要关心 () => {}
语法。如果我在控制器声明中使用箭头函数语法,它不起作用:
...
controller: ($scope, $reactive) => { //this does not work
$reactive(this).attach($scope);
this.newParty = {};
this.helpers({
parties: () => {
return Parties.find();
}
});
...
谁能解释一下什么时候可以使用箭头功能什么时候不能?
它不起作用,因为箭头函数不像常规函数那样创建新的 this
上下文,而是使用父函数的上下文。
在定义控制器时,它很重要,而在定义助手时则无关紧要。
更详细的回答你也可以看这里:https://github.com/Urigo/angular-meteor/issues/965#issuecomment-165916592