2

タスクのリストをgetTasks返す関数があります:

$.getJSON("http://todo/actions/", function(data) {
    self.tasks([]); // empty before refresh
    ko.utils.arrayMap(data, function(task) {
        return self.tasks.unshift(new Task.Model(task));
    });
});

リストを更新するこの関数に接続された更新ボタンもあります。しかし、更新ボタンを実行する前に、監視可能な配列を空にする必要があったため、重複がなくなりました。

これはすべて正常に機能しますが、私のビュー内では、foreachバインディングにafterAddbeforeRemoveコールバックの両方が含まれており、視覚的に混乱しています。更新ボタンを押すたびに、リスト全体がフェードアウトし、新しいリストがフェードインします。

その配列を更新して新しい値のみを追加し、既存の値を保持する方法はありますか?

4

1 に答える 1

2

プロパティを使用ko.mappingおよび指定して、keyノックアウトが既存のアイテムの更新と新しいアイテムの追加を検出する方法を定義できます。

ドキュメントがプロパティko.mapping.fromJSをどのように定義しているかを見てください。key

于 2013-08-30T14:08:38.760 に答える