ember.js - 迁移到 Ember 辛烷后出现错误

标签 ember.js ember-octane

我正在使用 Ember 3.16.3,并且在以下代码中收到此错误:

Error: Assertion Failed: You must pass a function as the second argument to the on modifier

//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 ...
  }
}

最佳答案

根据错误中的指定,on 修饰符应接收要执行的有效函数。正如 guides 中提到的,

If you add the {{action}} helper to any HTML DOM element, when a user clicks the element, the named event will be sent to the template's corresponding component or controller.

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

因此,将您的 login 操作移至 Controller将解决这个问题。此外,您还需要将电子邮件移至 Controller ,否则您将无法看到其更新正常工作。

关于ember.js - 迁移到 Ember 辛烷后出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60595635/

相关文章:

javascript - Ember Octane 和 JQuery

javascript - 从 emberjs 表单中获取值(value)

javascript - 基本 Ember 模板未在 Rails 中渲染

drag-and-drop - 使用Ember.js拖放

ember.js - 如何将模板中的 "action"传递给它在 Ember Octane 中的子组件

ember.js - 使用 ember-bootstrap 自定义元素改变变更集字段值

javascript - 使用 Handlebars 在 Ember Octane 中切换类的正确方法?

webpack - 将 Monaco Editor 集成到 ember Octane 中

javascript - 如何通过数组中的哈希键搜索对象

javascript - 无法对不在 DOM 中的 Metamorph 执行操作