控制器声明中的角度流星箭头功能

时间:2015-12-17 15:49:03

标签: javascript angularjs angular-meteor

我关注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();
              }
            });
...

当我可以使用箭头功能时,有人可以解释我吗?什么时候不能?

1 个答案:

答案 0 :(得分:1)

它不起作用,因为箭头函数不像常规函数那样创建新的this上下文,而是使用父函数。 在定义控制器时,它很重要,而在定义帮助器时则不然。 有关更详细的答案,您还可以在此处查看:https://github.com/Urigo/angular-meteor/issues/965#issuecomment-165916592