コードで次のように2つの監視可能な配列を宣言しました
self.versionDataByProduct = ko.observableArray([]);
self.copiedSavedVersionData = ko.observableArray([]);
データを保存するとき、以下のように self.versionDataByProduct からすべての値を self.copiedSavedVersionData にコピーします
self.copiedSavedVersionData(self.versionDataByProduct());
次に、次のようにcompareArrayというボタンイベントで2つの監視可能な配列を比較しようとします
this.compareArray = function () {
debugger;
var results = [];
var differences = ko.utils.compareArrays(self.versionDataByProduct(), self.copiedSavedVersionData());
ko.utils.arrayForEach(differences, function (difference) {
if (difference.status === "deleted") {
results.push(difference.value);
}
});
return results;
};
しかし、これはうまくいきません。ある観測可能な配列を別の配列にコピーし、観測可能な配列を変更すると、他の配列が自動的に更新されるためです。私はそれをしたくありません。監視可能な配列 self.copiedSavedVersionData をコピー後もそのままにしておきたいです。どうすれば達成できますか?変更を加えたかどうかを追跡しているだけです。配列が変更された場合、コードでボタンを有効にします。現在、ダーティトラッキングの方法がわからないので、この代替手段を見つけましたが、機能していません。助けてください。