我刚开始使用ember.js。我的应用程序中有两个模型。一个保存数据,另一个保存用户编辑的数据。我使用单向绑定绑定它们。
App.ViewModel = Ember.Object.create({
title:'title',
text:'text',
)};
App.EditModel = Ember.Object.create({
titleBinding: Ember.Binding.oneWay('App.ViewModel.title'),
textBinding: Ember.Binding.oneWay('App.ViewModel.text'),
)};
我让用户在EditModel模型中编辑数据。但是如果用户放弃了更改,我希望能够将值设置回编辑前的状态,即。到ViewModel中的值。
有没有办法重新绑定这些属性?或者在ViewModel中对属性进行manualy上升更改事件,以便EditModel更新?或者我的问题的任何其他方法?
答案 0 :(得分:3)
您可以创建一个自定义Mixin来处理模型的重置,请参阅http://jsfiddle.net/pangratz666/CjB4S/
App.Editable = Ember.Mixin.create({
startEditing: function() {
var propertyNames = this.get('propertyNames');
var props = this.getProperties.apply(this, propertyNames);
this.set('origProps', props);
},
reset: function() {
var props = this.get('origProps');
Ember.setProperties(this, props);
}
});
App.myModel = Ember.Object.create(App.Editable, {
propertyNames: ['title', 'text'],
title: 'le title',
text: 'le text'
});
稍后在视图中,当您想要重置当前值的快照时,只需调用startEditing
,当您想要重置为值的上一个快照时,reset
。{/ p >