1

我正在使用 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 ...
  }
}
4

1 回答 1

2

正如错误中所指定的,on修饰符应该接收一个有效的函数来执行。如指南中所述,

如果您将{{action}}帮助器添加到任何 HTML DOM 元素,当用户单击该元素时,命名事件将被发送到模板的相应组件或控制器。

这适用于on修饰符或模板中使用的任何值。您可以将路由视为我们为相应页面获取数据的部分。必须在要在模板中使用的控制器或组件内定义任何其他支持属性或计算。

因此,将您的login操作移至控制器将解决此问题。此外,您还需要移动email到控制器,否则您将无法看到对它的更新正常工作。

于 2020-03-09T06:50:33.480 回答