重新绑定模型中的属性,emberjs

时间:2012-04-16 08:44:26

标签: data-binding ember.js

我刚开始使用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更新?或者我的问题的任何其他方法?

1 个答案:

答案 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 >