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