Почему я получаю 'this is undefined' в моих компонентных методах Octane? - PullRequest
1 голос
/ 07 ноября 2019

Я пишу некоторые компоненты в стиле Octane в Ember v3.13 вместе с {{did-insert}} ember-render-modifier . Однако, когда вызывается функция, связанная с 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)
  }
}

1 Ответ

6 голосов
/ 07 ноября 2019

Методы, которые используются в качестве действий в шаблонах, должны иметь @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 для action.

...