1
我最近在淘汰賽中遇到了一個奇怪的行爲。爲了說明,看看這個小提琴:http://jsfiddle.net/77aP3/。淘汰賽計算重置選擇顯示/隱藏
this.myVar = ko.observable();
this.vars = ko.observableArray(["Dave", "Steve", "Jim"]);
this.tf = ko.observableArray([true, false]);
this.show = ko.observable();
var self = this;
this.myVarChanger = ko.computed({
read: function() {
return self.myVar;
},
write: function (value) {
self.myVar(value);
}
});
當改變在第一選擇(戴維,史蒂夫,吉姆),在視圖模型的相應的變量的變化的值。第二個選擇會更改是否顯示第一個。
嘗試在第一個選擇中選擇Steve或Jim,然後隱藏它(在第二個選擇中選擇false)。再次顯示時,myVar的值會自動更改爲Dave(默認值),而不是切換到您選擇的那個。如果您不使用ko.computed,而是使用純觀察值,則不會發生這種情況。
這是應該發生的嗎?我的猜測是knockout重新評估計算變量,當它顯示select時,就像程序執行開始時通常所做的那樣。