好的,所以我正在尝试按照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内的问题,或者我的语法错误,但我无法看到问题。
如果这看起来像新手的错误我很道歉我是一个没有经验的编码员。
答案 0 :(得分:0)
箭头函数不会将this
重新绑定到函数范围。你不应该只是箭头函数,因为它是更漂亮的语法。有一个原因,何时使用。所以在这两个例子中,this.regUser指的是不同的对象。
箭头功能没有自己的功能;这个值 使用封闭执行上下文。因此,在下面的代码中, 这个传递给setInterval的函数内部也是一样的 在封闭函数
中的值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions