1

ember.jsを使い始めたばかりです。アプリケーションには2つのモデルがあります。1つはデータを保持し、もう1つはユーザーが編集したこのデータを保持します。一方向バインディングを使用してバインドします。

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が更新されるようにしますか?または私の問題への他のアプローチはありますか?

4

1 に答える 1

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ときと、値の前のスナップショットにリセットするときにを呼び出すだけです。

于 2012-04-16T11:12:57.960 に答える