Ошибка после перехода на октан Ember

Я использую Ember 3.16.3 и получаю эту ошибку в следующем коде:

Ошибка: утверждение не удалось: вы должны передать функцию в качестве второго аргумента в on модификатор

//login.hbs

 <form {{on "submit" this.login}}>
       <Input type="email" placeholder="email" @value={{this.email}} />
      <button type="submit">login</button>
 </form>

.

//login.js

import Route from '@ember/routing/route';

import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class LoginRoute extends Route {

   @tracked email = '';

   @action
   login(event) {
     event.preventDefault();

     // do some operations ...
  }
}

1 ответ

Решение

Как указано в ошибке, onмодификатор должен получить допустимую функцию для выполнения. Как упоминалось в руководствах,

Если вы добавите помощник {{action}} к любому элементу HTML DOM, когда пользователь щелкает элемент, указанное событие будет отправлено в соответствующий компонент или контроллер шаблона.

Это справедливо для onмодификатор или любые значения, которые используются в шаблоне. Вы можете думать о маршрутах как о части, откуда мы получаем данные для соответствующей страницы. Любое другое свойство поддержки или вычисление должно быть определено внутри контроллера или компонента, которые будут использоваться в шаблоне.

Следовательно, перемещение вашего loginдействие к контроллеру решит эту проблему.

Другие вопросы по тегам