1

使用:

Ember.VERSION : 1.0.0-rc.1
Handlebars.VERSION : 1.0.0-rc.3
jQuery.VERSION : 1.9.1

カスタム変換を使用してシリアル化および逆シリアル化されたカスタム オブジェクトのリストを中心に構築されたモデルがあります。次のようになります。

DS.RESTAdapter.registerTransform('list', {
  serialize: function(value) {
    return value.mapProperty('line').join("\n");
  },
  deserialize: function(value) {
    return (value || '').split(/\n/).
      map(function(line) { return App.ListItem.new(line: line); });
  }
});
App.ListItem = Ember.Object.extend({
  line: ''
});
App.MySuperModel = DS.Model.extend({
  list: DS.attr('list');
});

リストにアイテムを追加または削除するとモデルが汚れますが、ListItem の行を更新すると、トランザクションをロールバックしても汚れたり、以前の状態に戻ったりしません。

それを機能させる方法について誰か考えがありますか?単なる単純なリストであり、サーバー上に永続化されているものには、リレーションシップを使用したくありません。

4

1 に答える 1

2

それを回避する方法を見つけましたが、よりクリーンな方法が誰かに提供されることを感謝します。

私が間違っていたのは、行の元の配列を操作して行を追加または削除していたため、ember は変更を検出せず (no .set('lines', ...) )、元にロールバックしていたことです。変更された配列。

私が今していることは、(便利な.copy()メソッドを使用して) 行の新しい配列を作成し、 .set('lines', ...)を使用して、モデルに行の値が変更されたことを伝えることです。

(結論 : 問題を黙って考えてください。問題は自然に解決する傾向があります ^^)

于 2013-05-02T11:24:08.860 に答える