Обновление Ember Octane: как обработать ошибку eslint бездействия - PullRequest
0 голосов
/ 27 марта 2020

Это относится к: Ember Octane Upgrade Как передать значения из компонента в контроллер

В файле ../templates/change-password.hbs я получаю следующее Ошибка eslint:

Не используйте action в качестве {{action ...}}. Вместо этого используйте модификатор on и помощник fn. бездействие

Код:

<Clients::ChangePasswordForm @chgpwd={{this.model}} @changePassword={{action 'changePassword'}} @errors={{this.errors}} />

Принятый ответ дал мне указание использовать этот синтаксис. Есть ли другой способ справиться с этим или я должен игнорировать ошибку?

1 Ответ

1 голос
/ 27 марта 2020

В Ember Octane обновлены линтеры, чтобы поощрять использование модификатора on и помощника fn вместо action помощника и модификатора. Модификатор action используется для привязки правильного контекста this к функции. В Octane @action декораторы являются рекомендуемым способом привязки контекста к любому методу.

В вашем случае, поскольку вы передаете changePassword как закрывающее действие компоненту Clients::ChangePasswordForm, рекомендуемый способ передачи функции компоненту следующий:

<Clients::ChangePasswordForm 
  @chgpwd={{this.model}}
  @changePassword={{this.changePassword}}
  @errors={{this.errors}} 
/>

В случае, если вам необходимо передать любой аргумент (скажем, this.argument) вместе с функцией, используйте fn helper:

<Clients::ChangePasswordForm 
  @chgpwd={{this.model}}
  @changePassword={{fn this.changePassword this.argument}}
  @errors={{this.errors}} 
/>

Поскольку вы уже пометили свое действие с помощью @action декоратор . Вы хороши для go.

Вот официальное руководство о том, как обновить обработчики событий classi c до октанового рекомендованного способа

Сообщение lint может быть более полезным, и оно уже проблема открыта в ember-template-lint репо, чтобы предоставить более полезное сообщение об ошибке при использовании помощника classi c action.

...