似乎我不能使用箭头函数作为观察者,匿名方法可以正常工作。我是不是错过了一些重要的东西,为什么上下文不同?
ember.debug.js:32096 TypeError: _this3.get is not a function
at .sessionChanged (session.js:77)
at Object.applyStr (ember.debug.js:23331)
at Object.sendEvent (ember.debug.js:16842)
at ObserverSet.flush (ember.debug.js:20171)
at endPropertyChanges (ember.debug.js:20682)
at Object.changeProperties (ember.debug.js:20707)
at Object.setProperties [as default] (ember.debug.js:21786)
at exports.default._emberMetalMixin.Mixin.create.setProperties (ember.debug.js:35465)
at invalidate (session.js:98)
at session.js:42匿名功能-有效。
/**
* Session event observer.
*/
sessionChanged: Ember.observer('user', function() {
// Get the user value
const user = this.get('user');
// Get the session token
const token = this.get('token');
console.log(user, token);
}),使用箭头函数的观察者方法-抛出异常。
/**
* Session event observer.
*/
sessionChanged: Ember.observer('user', () => {
// Get the user value
const user = this.get('user');
// Get the session token
const token = this.get('token');
console.log(user, token);
}),发布于 2016-05-25 09:34:07
箭头函数是一个ES6特性,它在Ember.js中使用Babel.js进行转换。箭头函数是一种较短的表示法,它还隐式地将当前上下文绑定到定义的函数。
在您的示例中,当前上下文未定义,因为定义发生在模块内,而模块中的顶级this在ES6中未定义。(见modules.html)
它使用匿名函数工作,因为成员显式地将对象上下文绑定到它。它不能使用箭头函数,因为Babel将自动完成绑定。
https://stackoverflow.com/questions/37432588
复制相似问题