Ember.js 使用箭头函数作为观察者失败了吗?

Ember.js 使用箭头函数作为观察者失败了吗?,ember.js,Ember.js,似乎我不能使用箭头函数作为观察者,匿名方法可以很好地工作。我是否遗漏了一些重要的东西,为什么上下文不同 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) a

似乎我不能使用箭头函数作为观察者,匿名方法可以很好地工作。我是否遗漏了一些重要的东西,为什么上下文不同

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);
  }),

Arrow函数是ES6的一个特性,它使用Babel.js在Ember.js中传输。 箭头函数是一种较短的表示法,它还隐式地将当前上下文绑定到定义的函数

在您的情况下,当前上下文是未定义的,因为定义发生在模块内部,而模块中的顶层
这个
在Babel ES6中是未定义的。(见附件)


它使用匿名函数工作,因为ember显式地将对象上下文绑定到它。它无法使用arrow函数,因为Babel将自动进行绑定。

arrow函数是ES6的一项功能,使用Babel.js在Ember.js中传输。 箭头函数是一种较短的表示法,它还隐式地将当前上下文绑定到定义的函数

在您的情况下,当前上下文是未定义的,因为定义发生在模块内部,而模块中的顶层
这个
在Babel ES6中是未定义的。(见附件)


它使用匿名函数工作,因为ember显式地将对象上下文绑定到它。它无法使用箭头函数,因为Babel将自动进行绑定。

另请参见。另请参见。感谢您的澄清。感谢您的澄清。