我有以下代码:如何通过输入或从其他输入计算来设置计算的观测值?
function ViewModel() {
var self = this;
self.deckareax = ko.observable(0);
self.deckareay = ko.observable(0);
self.calculatedarea = ko.observable(20);
self.deckareax.subscribe(function() {
if (self.deckareax() == 0 || deckareay == 0) {
self.calculatedarea(0);
} else {
self.calculatedarea(self.deckareax() * self.deckareay());
}
}
);
self.deckareay.subscribe(function() {
console.log("deckareay " + self.deckareay())
if (self.deckareax() == 0 || self.deckareay() == 0) {
self.calculatedarea(0);
} else {
self.calculatedarea(self.deckareax() * self.deckareay());
}
}
);
self.deckareamxm = ko.computed({
read: function() {
return self.calculatedarea();
},
write: function (value) {
self.calculatedarea(value);
if ((self.deckareax() * self.deckareay(0)) != value) {
self.deckareax(0);
self.deckareay(0);
}
},
owner:self
});
}
;
ko.applyBindings(new ViewModel());
我希望能够通过手动输入或进入deckareax * deckareay calcualting设置总面积(deckareamxm)。如果输入结果并且(deckareax * deckareay)不等于总的甲板面积x并且y应该被清除。
但是,如果我输入总面积清除两者,但也清除自己,这非常有效。如果我再次输入它保留的总面积。我认为它可能会变得复杂。有任何想法吗?
这行中的'0'只是一个错字:'(self.deckareax()* self.deckareay(0)!= value)'? – 2012-02-06 22:21:30
是的。以及我的实际代码中的错误! – GraemeMiller 2012-02-06 22:48:19