2

私は自分のemberデータプロパティの配列を実装していました

DS.JSONTransforms.array = {
  serialize: function(value) {
    return Em.isNone(value) ? [] : value ;
  },
  deserialize: function(value) {
    return Em.isNone(value) ? [] : value ;
  }
};

そして、配列http://jsbin.com/avENazE/4/editに項目を追加および削除するためのテスト用にこの jsbin を作成しました

コンソールを確認すると

model.get('pages').push('hi');
console.log(model.get('pages'));

新しいアイテムが配列に正しく追加されていることがわかりますが、ビューには表示されません。

また、count プロパティは更新されず、このエラーはモデルの保存時にコンソールに表示されます

Uncaught TypeError: You must pass a resolver function as the sole argument to the promise constructor 
4

1 に答える 1

1

viewデータバインディングが適切に機能するために必要な表現モデルデータの変更に注意してください。データバインディングを適切に機能させるには、バインディングに適した正しい関数を使用する必要があるため、配列に対して行われる操作の場合、単にバニラを使用することはできませんpushが、代わりpushObjectに対応する を使用することはできません。同じことremoveObjectが新しい設定に適用されますプロパティへの値、ドット表記は機能しますが、バインディングを更新しないため.set().get()使用する必要があります。

そうは言っても、ここでは作業中のjsbinです。

それが役に立てば幸い。

于 2013-08-29T10:20:35.873 に答える