當使用select和knockouts'選項'綁定時,我看到隱藏select元素並再次顯示時的行爲。Knockout選項選擇在隱藏/顯示後重新初始化
當我在列表中選擇一個選項時,observable被賦予正確的值。但是,當我隱藏選擇的html項目並再次使其可見時,之前選擇的值將會丟失。
對於我的測試我使用下面的HTML模板:
Visible: <input type="checkbox" data-bind="checked: visible" />
<!-- ko 'if': visible -->
<select data-bind="options: options, optionsText: 'name', value: selectedItem"></select>
<!-- /ko -->
結合
var ViewModel = function() {
this.visible = ko.observable(true);
this.options = ko.observableArray([
{name: 'A', value: 'A00'},
{name: 'B', value: 'A01'},
{name: 'C', value: 'A02'},
]);
this.selectedItem = ko.computed({
read: function() {
console.log("reading value");
},
write: function (newSelection) {
console.log("setting value:" + newSelection.value);
}
});
};
ko.applyBindings(new ViewModel());
你可以在我的例子上的jsfiddle測試: http://jsfiddle.net/5wZQ2/169/
當您選擇一個值(例如列表中的B),可觀察值將獲取該值。當您取消選中可見並隱藏選擇框並再次使其可見時,它將丟失其所選值並重新初始化爲列表中的第一項。
有人可以解釋這種行爲嗎?
是否有一個特定的原因,你需要一個可寫的計算Observable屬性?另外,在計算的observable裏面的'read'函數中,你沒有返回任何值,所以什麼都不會設置。 – Agalo