我相当精通Javascript,但是我很难理解Ember在某些情况下如何处理this上下文。

我有一个组件 Controller :

import Component from '@ember/component';

export default Component.extend({
  keyPress(e) {
    // here I want to call a method in the `actions` hash
    this.get('onAccept')
  },

  actions: {
    onAccept() {
      console.log('action accepted!')
    }
  }
}

但是,每次运行此命令时,都会出现以下错误:
Uncaught TypeError: this.get(...) is not a function

当我在actions散列之外有一个方法需要以其他方式访问actions散列,内部的函数时,似乎总是会发生这种情况。

这种行为似乎是必需的,因为组件事件属于outside of the actions hash

那么我应该如何在actions哈希表之外使用事件方法,但仍然能够调用属于actions哈希表内部的方法?

在Ember中,这似乎是 Controller 中记录很少的一部分。也许我只是在这里想念一些东西。任何帮助是极大的赞赏。

最佳答案

要从actions散列外部调用操作,请使用this.send

this.send('onAccept');

有关sendsendAction的更多信息,请参见:https://medium.com/ember-titbits/ember-send-and-sendaction-5e6ac9c80841

07-24 09:50
查看更多