手動サブスクリプションを呼び出した監視可能なプロパティの名前を見つける方法はありますか?
ノックアウトのコールバック署名は.subscribe(function(newValue) { ... })
、オブジェクトのすべての監視可能なプロパティをサブスクライブしているため、次のような署名が必要です: function(newValue, propertyName)
(そしておそらく古い値...)。
以下のコードの抜粋は、プロパティの周りにクロージャを取得しようとしているのを示していますが、最後にスキャンされたプロパティが常に表示されます。
変更されたプロパティを確認するにはどうすればよいですか?
this.Data = ko.mapping.fromJS(dataFromServer);
...
ScrollDataItem.prototype.GetInformedOnChange = function () {
var self = this;
for(var prop in this.Data) {
if(self.Data.hasOwnProperty(prop) && prop != "__ko_mapping__") {
var closureProp = prop;
self.Data[prop].subscribe(function (newValue) {
alert("New value is: " + newValue);
alert("Property that called: " + closureProp);
});
}
}
};