【问题标题】:emberjs: how to revert model attribute alteration made via input fieldemberjs:如何恢复通过输入字段进行的模型属性更改
【发布时间】:2014-02-08 19:29:50
【问题描述】:

我正在使用http://emberjs.com/guides/getting-started/toggle-todo-editing-state/ 中描述的编辑位置

我想出的解决方案是在编辑之前保存模型的值,然后在编辑完成后,无论是否按下取消,都决定恢复它。

这是 jsbin http://emberjs.jsbin.com/hesib/1/edit,恐怕它不太好和惯用。

你说什么?

【问题讨论】:

  • 您可以回滚更改,当 save = false 时调用 this.rollback()。或者为取消创建一个不同的操作,然后在那里调用回滚。
  • 不错!但这将重置所有模型,而不仅仅是目标属性,因此将保存限制为每次编辑完成。带有单个“保存”按钮的案例会保存整个模型吗?

标签: javascript ember.js ember-data


【解决方案1】:

我不太确定你想要达到什么目的。

如果您想一次将整个模型恢复到上次提交的状态,您应该使用 this.rollback()。但请注意,this.rollback 正在通过 this.save() 恢复到上次提交的状态,无论是否保存为 false。有关 this.rollback 的预期行为的详细信息:http://discuss.emberjs.com/t/expected-behaviour-of-rollback-after-save-attempt-returns-422-ember-data-1-0/2513

如果您喜欢仅恢复一个属性的功能,我建议不要更改原始模型,而是使用视图:创建一个存储模型值的临时对象,在那里实现该临时模型的编辑和恢复功能,以及如果应该保存更改,将更新的值推送到控制器,在那里更新模型并保存。

如果您想保存模型并继续编辑,您可以只使用保存但保持视图处于编辑模式。

【讨论】:

  • 你的意思是一个组件,对吧?因为不可能在视图 afaik 中封装变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
相关资源
最近更新 更多