我有以下代碼:如何通過輸入或從其他輸入計算來設置計算的觀測值?
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