Ошибка после перехода на октан 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
действие к контроллеру решит эту проблему.