ノックアウトのオプションを使用してバインドすると、選択要素を隠して再度表示するときに期待していない動作が見られます。ノックアウトオプションの選択は、非表示/非表示の後で再初期化されます
リストでオプションを選択すると、オブザーバブルに正しい値が与えられます。しかし、select html項目を非表示にしてから再び表示させると、前に選択した値が失われます。
私は、次のHTMLテンプレート使用しています私のテストのために:あなたはjsfiddleに私の例でこれをテストすることができ
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());
と組み合わせて
Visible: <input type="checkbox" data-bind="checked: visible" />
<!-- ko 'if': visible -->
<select data-bind="options: options, optionsText: 'name', value: selectedItem"></select>
<!-- /ko -->
を: http://jsfiddle.net/5wZQ2/169/
値(リストのBなど)を選択すると、オブザーバブルは値を取得します。表示を非表示にして選択ボックスを非表示にしてから再び表示させると、選択した値が失われ、リストの最初の項目に再初期化されます。
誰でもこの現象を説明できますか?
特に、書き込み可能なComputed Observable Propertyが必要ですか?また、計算されたobservable内の 'read'関数では、値を返さないので、何も設定されません。 – Agalo