這是我的代碼:淘汰賽計算不點火訂閱
self.convertedPrice = ko.computed(function() {
console.debug('Calculating convertedPrice');
if (self.ProductListPrice() != null && self.multiplicationFactor() != null) {
return self.ProductListPrice() * self.multiplicationFactor();
}
return 0;
}).extend({notify:'always'});
self.convertedPrice.subscribe(function (newVal) {
console.debug('convertedPrice subscription fired.');
self.discountedPrice(parseFloat(newVal).toFixed(2));
});
當self.ProductListPrice
更新,self.convertedPrice
正確地更新和調試第一寫入,但認購不燒成,第二調試語句不會被寫入和self.discountedPrice
未更新。
我已經通過將訂閱的內容移動到計算的代碼中來解決這個問題,但我想了解原始訂閱無法工作的原因。如果我手動更改self.ProductListPrice
或self.multiplicationFactor
,訂閱就會觸發,但是當它們因我的其他代碼和用戶輸入而更改時,訂閱不會觸發。
任何想法我做錯了什麼?
如果你想訂閱計算何時啓計算稍稍柚木它計算。使用'deferEvaluation:true' sample here http://jsfiddle.net/LkqTU/26144/ –
我已經嘗試推遲評估,同時試圖自己跟蹤這個,但它沒有任何區別。謝謝你的想法。 – Tim