【问题标题】:Clearing form fields in Ember 2.10在 Ember 2.10 中清除表单域
【发布时间】:2016-12-30 13:02:02
【问题描述】:

我正在学习有关构建 ember 2.10 应用程序的教程。我已将验证逻辑从联系人控制器中移出,并将其放在我的联系人模型中。我已将我的操作 (saveContact) 放在我的联系路线文件中。 我可以将我的新联系人保存到 Firebase 数据库而不会出错。我不知道如何清除我的表单。

我的联系路线文件看起来像

import Ember from 'ember';

export default Ember.Route.extend({

  model() {
    return this.store.createRecord('contact');
  },

  actions: {

    saveContact(newContact) {
      newContact.save().then((response) => {
        const email = this.get('model.email');
        const message = this.get('model.message')
        this.set('email', '');
        this.set('message', '');
      })
    }

  }

});

我正在尝试检索表单中的当前值并将消息和电子邮件都设置为空字符串。

我已经向控制台运行了一个测试和控制台记录的电子邮件,它返回 undefined。

在输入字段中,传入的值为model.email 和model.message。

还有其他人被这个问题困扰吗?

【问题讨论】:

  • 试试this.set('model.email', ''); this.set('model.message', '');或者你可以直接this.refresh()它会调用模型钩子,你会得到新的联系人模型。
  • 谢谢。 this.refresh() 有效。 this.set('model.email, ' ') 和 this.set('model.message', ' ') 我尝试的第一件事。我可以提交表单值,但页面只是冻结而没有重置。
  • 在模型函数中创建新记录有点奇怪。在存储中创建记录(不保存)不是异步过程。因此,您可以在任何地方进行操作,而不仅仅是在模型中。 model() 钩子的目的是从 api/database/file 加载一些东西。我认为在您的情况下,您应该有联系表单组件,并且应该实现整个联系表单逻辑。如果你已经有了这个组件,你可以粘贴它,我会看看可以做些什么来改进代码。

标签: javascript ember.js


【解决方案1】:

要刷新这条路线上的模型,请尝试调用

this.refresh()

这将触发 beforeModelmodelafterModel 钩子,因此您将获得新的联系人模型。 Reference

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 2015-05-26
    • 2014-06-07
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多