javascript - Ember 模型回滚将 View 重置为之前的状态

标签 javascript jquery ember.js ember-data

我有一个简单的表单(包含一些绑定(bind)到模型的文本字段和复选框),它可以使用 jQuery 的 slipToggle 来显示或隐藏。

此表单有两个按钮:保存和取消。

基本上,当我需要对模型进行一些更改时,此表单就会变得可见。单击“保存”按钮时,我保存模型

this.get('model.content').save();

并隐藏表单。

取消也是如此。我尝试打电话

this.get('model.content').rollback();

但它不会恢复文本字段,也不会重置复选框。我希望下次打开表单时它们处于之前的“未保存”状态。我该怎么做?

最佳答案

在您的 Ember 2.10 组件中,添加:

  willDestroyElement() {
    this._super(...arguments);
    this.get('model').rollbackAttributes();
  }

这将在从 DOM 中删除表单组件之前重置模型未保存的更改。当用户离开表单而不保存时,这尤其有用。然后,您将希望阻止所做的更改通过您的应用程序传播。这假设您将模型属性传递到输入字段中,如下所示:

 {{input value=model.name}}

http://emberjs.com/api/data/classes/DS.Model.html#method_rollback http://emberjs.com/api/classes/Ember.Component.html#method_willDestroy

关于javascript - Ember 模型回滚将 View 重置为之前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22335533/

相关文章:

javascript - "Uncaught Error: Syntax error, unrecognized expression:"具有自动完成功能(特殊字符?)

javascript - 文本区域的 jQuery 输入过滤器

javascript - 使用 EmberJS Router 加载模型

ember.js - 使用带有嵌套 View 的 `afterRender` 钩子(Hook)

ember.js - Emberjs bindAttr id-prefix

javascript - 使用 PHP 在 javascript 函数中检索 json

javascript - 从 MySQL 数据库加载热图 LatLng 坐标 Google map API

javascript - 使用对象方法设置 html 值真的很奇怪

javascript - 如何更改 Ajax 请求类型和数据

jquery - 多个AJAX调用完成后如何通知