【发布时间】:2016-04-28 01:20:43
【问题描述】:
我正在使用 ember-data 来编辑具有自动模型分辨率的用户
this.route('user', function() {
this.route('edit', { path: ':user_id'})
});
这很好用,用户可以修改模型DS.attribute、DS.belongsTo和DS.hasMany的所有方面。
用户可以通过多种方式离开,在这种情况下,应从模型中删除所有更改。
- 单击
Cancel按钮 - 点击
Broswer Back按钮 - 点击
Save按钮,远程请求fails,然后离开页面。 - 只需单击页面上的其他链接即可将它们带到其他地方。
只有在用户明确希望通过单击Save 按钮并且服务器请求成功时才能应用更改。
我考虑过使用ember-buffered-proxy,但我不确定这将如何处理 DS.belongsTo 和 DS.hasMany 关系。无论如何,在保存模型之前,我需要在保存之前执行buffer.applyBufferedChanges();,如果服务器出现故障,我会像以前一样处于保存状态。
路由中的willTransition 钩子似乎是执行此操作的明显位置,但我如何确保从模型中删除所有更改,因为rollbackAttributes() 仅适用于DS.attribute 控件。
【问题讨论】:
-
看不出这是如何解决问题的,因为 ember-data 模型是从 routes 模型挂钩返回的模型。
-
然后返回一个空对象,然后将其保存为模型,您会考虑这样做吗?
-
@TameBadger 从哪里返回一个空对象?承诺?
-
路由模型钩子
标签: ember.js ember-data