首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用箭头函数作为观察者失败?

问使用箭头函数作为观察者失败?
EN

Stack Overflow用户
提问于 2016-05-25 09:12:26
回答 1查看 401关注 0票数 0

似乎我不能使用箭头函数作为观察者,匿名方法可以正常工作。我是不是错过了一些重要的东西,为什么上下文不同?

代码语言:javascript
复制
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

匿名功能-有效。

代码语言:javascript
复制
  /**
   * 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);
  }),

使用箭头函数的观察者方法-抛出异常。

代码语言:javascript
复制
  /**
   * 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);
  }),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 09:34:07

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

在您的示例中,当前上下文未定义,因为定义发生在模块内,而模块中的顶级this在ES6中未定义。(见modules.html)

它使用匿名函数工作,因为成员显式地将对象上下文绑定到它。它不能使用箭头函数,因为Babel将自动完成绑定。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37432588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档