我需要一个时间戳来更新值。由于我不会在这里讨论的原因,它value
是一个可写的计算,它指向一个valueInstance
可观察的,所以它们基本上显示相同的数据。
如果我订阅了 observable,它会按预期工作,只有在 observable 发生变化时才会触发。如果我订阅了计算,它会立即触发,导致错误的时间戳,即使 observable 仍然未定义。这是怎么回事?
更新:看起来这只发生在计算有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());
}); }