1

マッピング プラグインを使用して、ノックアウト js ビューモデルにデータを挿入および更新しようとしています。
初期データは次のようになります (数字は「id」フィールドにマッピングされ、テキストは「name」フィールドにマッピングされます):

  • 1つ
    • 2 2
      • 3 3
      • 4 4
    • 5 5
      • 6 6
      • セブンセブン
  • 8 エイト
    • 9 ナイン
      • 10テン
      • 11 イレブン
    • 12 12
      • 13 13
      • 14 14
  • 15 15

私が得るものは

  • 1つのMOD
    • 2 2
      • 3 3
      • 4 4
  • 16 16

私が取得したいのは:

  • 1つのMOD
    • 2 2
      • 3 3
      • 4 4
  • 8 エイト
    • 9 ナイン
      • 10テン
      • 11 イレブン
    • 12 12
      • 13 13
      • 14 14
  • 15 15
  • 16 16

言い換えると:

  • フィールド「name」の要素 1 の「one」から「oneMOD」への更新 (フィールド ID がキーとしてマップされるため)
  • 5 とその息子が削除された (または手付かずの)
  • 8 と 15 はそのまま
  • 16件追加。

ko.mapping.fromJS は、新しいデータを更新するのではなく、新しいデータを置き換えるようです。
確かに私は何かが欠けています。

ここでコードを見つけることができます: http://jsbin.com/uwihoz/2/edit

ティア・
ジャンニ

編集

わかりました、ko.mapping.fromJS を使用した「更新」の意図を誤解していました。
モデルを更新する場合は、元のデータセット全体を更新とともに送信する必要があります。
部分的な更新が必要な場合は、実装する必要があります。KnockoutJS-Mapping-updateData
をテストします。

この投稿(knockoutjs-using-updatefromjs-replacing-values-when-it-should-be-adding) は、私の疑問を裏付けてくれました。

これが役立つことを願っています。

さようなら、
ジャンニ

4

1 に答える 1

0

元の質問では、ko.mapping は新しいビューモデルを作成することで機能します。したがって、2 回目のマッピングを行うと、以前のビュー モデルが置き換えられます。更新は基本的に同じことを行います。

マッピングに求めているのは、データを理解し、既存のレコードを自動的に更新して新しいレコードを追加することです。それほど賢くない。更新結果を読み取り、元のビューモデルで正しいレコードを更新/追加するコードを作成する必要があります。

于 2012-10-17T10:51:34.850 に答える