【问题标题】:rebind properties in model, emberjs重新绑定模型中的属性,emberjs
【发布时间】:2012-04-27 14:25:42
【问题描述】:

我刚刚开始使用 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 中属性的更改事件,以便更新 EditModel?或任何其他方法来解决我的问题?

【问题讨论】:

    标签: data-binding ember.js


    【解决方案1】:

    您可以创建一个自定义 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 则要重置为先前的值快照。

    【讨论】:

    • 看起来很棒!当使用 ember-data 模型时,我们甚至可以通过观察模型的状态来想象某种自动化。
    • 我想补充一点,模型上 propertyNames 数组的规范对我来说在生成干净的对象以发送到服务器时单独使用。手感不错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多