()=> over function()给我一个Angular错误

时间:2017-12-07 14:12:04

标签: angularjs function syntax

好的,所以我正在尝试按照MEAN堆栈教程创建一个注册过程,并且我已经开始在旧语法上使用()=> {}函数。

现在我使用旧语法如下

    .controller('regCtrl', function(){
    this.regUser = function(){
      console.log('testing');
    };

    });

代码运行正常,并且在我使用新函数语法

时不会在控制台中抛出任何错误
.controller('regCtrl', ()=>{
  this.regUser = ()=>{
    console.log('testing');
  };
});

我在控制台日志

中收到此消息
angular.js:14700 TypeError: Function.prototype.bind.apply(...) is not a constructor
    at Object.instantiate (angular.js:5055)
    at angular.js:11015
    at Object.link (angular-route.js:1214)
    at angular.js:1385
    at wa (angular.js:10545)
    at q (angular.js:9934)
    at f (angular.js:9174)
    at angular.js:9039
    at angular.js:9430
    at d (angular.js:9217) "<h2 ng-view="" class="ng-scope">"

我只能假设这是一个在angularjs内的问题,或者我的语法错误,但我无法看到问题。

如果这看起来像新手的错误我很道歉我是一个没有经验的编码员。

1 个答案:

答案 0 :(得分:0)

箭头函数不会将this重新绑定到函数范围。你不应该只是箭头函数,因为它是更漂亮的语法。有一个原因,何时使用。所以在这两个例子中,this.regUser指的是不同的对象。

  

箭头功能没有自己的功能;这个值   使用封闭执行上下文。因此,在下面的代码中,   这个传递给setInterval的函数内部也是一样的   在封闭函数

中的值

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions