看起来我不能使用箭头函数作为观察者,匿名方法工作正常.我错过了一些关键的东西,为什么背景不同?
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
Run Code Online (Sandbox Code Playgroud)
匿名功能 - 工作.
/**
* 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);
}),
Run Code Online (Sandbox Code Playgroud)
使用箭头功能的观察者方法 - 引发异常.
/**
* 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);
}),
Run Code Online (Sandbox Code Playgroud)
箭头函数是ES6功能,使用Babel.js在Ember.js中进行转换.箭头函数是一种较短的表示法,它还将当前上下文隐式绑定到已定义的函数.
在您的情况下,当前上下文未定义,因为定义发生在模块内,并且模块中的顶层this在Babel ES6中未定义.(参见http://exploringjs.com/es6/ch_modules.html)
它使用匿名函数,因为ember显式绑定您的对象上下文.它不能用箭头功能,因为Babel会自动进行绑定.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |