値が更新されたときのタイムスタンプが必要です。ここでは説明しませんが、これはオブザーバブルvalue
を指す書き込み可能な計算されたものvalueInstance
であるため、基本的に同じデータが表示されます。
オブザーバブルをサブスクライブすると、期待どおりに機能し、オブザーバブルが変更されたときにのみ起動します。計算されたものにサブスクライブすると、オブザーバブルがまだ未定義であっても、すぐに起動して誤ったタイムスタンプが発生します。これどうしたの?
更新:これは、計算されたdeferEvaluation: true
function VM(){
var self = this;
self.valueInstance = ko.observable();
self.value = ko.computed({
read: function () {
return self.valueInstance();
},
write: function (value) {
self.valueInstance(value);
},
deferEvaluation: true
});
self.timeStamp1 = ko.observable();
self.value.subscribe(function (newValue) {
self.timeStamp1(new Date());
});
self.timeStamp2 = ko.observable();
self.valueInstance.subscribe(function (newValue) {
self.timeStamp2(new Date());
}); }