JQuery + Knockoutを使用するリッチな AJAX ベースの Web アプリケーションがあります。Knockout ビュー モデルをラップして.reset()、.isDirty( ) などのユーティリティ メソッドを公開する JQuery プラグインがあります。
.setBaseline()というメソッドがあります。このメソッドは、(マッピング プラグインを介して) データ モデルが入力されると、基本的にデータ モデルのスナップショットを取得します。次に、このスナップショットを使用して、モデルが変更されたかどうかをすばやく判断できます。
私が探しているのは、オブジェクトの 1 つがマスターと見なされる2 つの 2 つの JavaScript オブジェクトの違いを表すオブジェクトを返すことができるある種の汎用関数です。
たとえば、これが私のスナップショットであるとします。
var snapShot = {
name: "Joe",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 2,
blue: 3
}
};
次に、ライブ データが次のようになっているとします。
var liveData = {
name: "Joseph",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 3,
blue: 2
}
};
次を返す.getChanges(snapShot, liveData)ユーティリティ関数が必要です。
var differences = {
name: "Joseph",
favoriteColorPriority: {
pink: 3,
blue: 2
}
};
_.underscore ライブラリにこのようなものがあるのではないかと期待していましたが、このように機能すると思われるものは見つかりませんでした。