我需要一個時間戳來更新值。由於我不想進入這裏的原因,value
是一個可寫的計算結果,指向一個valueInstance
觀測值,所以它們基本上顯示相同的數據。Knockout訂閱正在意料之外的評估
如果我訂閱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());
}); }
什麼是你的問題?我沒有看到任何意外的行爲。 – Damien
即使'value'沒有改變,'value.subscribe'也會在初始加載時觸發。訂閱應該只在值更改時觸發。 – Homer