我有相互依赖的敲除变量。
Exempla:
var _CostNoVAT = ko.observable(0);
var _CostIncludeVAT = ko.observable(0);
var _VAT= 0.50;
如果用户将_CostNoVAT更改为10则_CostIncludeVAT需要为15(10 *(1 + VAT) 如果用户将_CostIncludeVAT更改为10则_CostNoVAT需要为6.66(10 /(1 + VAT)
我该怎么做?
的问候, yaniv abo
答案 0 :(得分:3)
您可以通过将其中一个observable转换为可写的计算器来完成此操作。这里,_CostIncludeVAT
是可写的计算。当它被改变时,它的write
函数被执行,实际上改变了_CostNoVAT
的值;然后将触发其read
函数执行...
function VM () {
this._VAT= 0.50;
this._CostNoVAT = ko.observable(0);
this._CostIncludeVAT = ko.computed({
read: function () {
return this._CostNoVAT() * (1 + this._VAT);
},
write: function(value) {
this._CostNoVAT(value / (1 + this._VAT));
},
owner: this
});
}
ko.applyBindings(new VM());
答案 1 :(得分:0)
使用一个作为规范值,然后将另一个派生到\中。假设我们将_CostNoVAT设为规范形式,然后当用户输入增值税成本时,将costNovat变量设置为6.66,然后允许它流入_ConstIncudeVAT。