为什么在我的辛烷值组分方法中得到'this is undefined?'

问题描述 投票:1回答:1

我正在Ember v3.13中与{{did-insert}} ember-render-modifier一起编写一些Octane样式的组件。但是,当调用与did-insert关联的函数时,我得到了TypeError: this is undefined。我在做什么错?

这是我的组件模板:

<div class="cardhost-monaco-container" {{did-insert this.renderEditor}}></div>

这是组件的JavaScript类:

import Component from '@glimmer/component';


export default class CodeEditor extends Component {
  renderEditor(el) {
    console.log(this.args.code)
  }
}
ember.js ember-3 ember-octane
1个回答
5
投票

在模板中用作操作的方法需要用@action装饰,以具有正确的this-上下文:

import Component from '@glimmer/component';
import { action } from '@ember/object';

export default class CodeEditor extends Component {
  @action
  renderEditor(el) {
    console.log(this.args.code)
  }
}

动作装饰器将组件上下文绑定到方法。在API docs for action中有更详细的描述。

© www.soinside.com 2019 - 2024. All rights reserved.