我对Knockout.js很新,所以这可能是一个愚蠢的问题.
我正在阅读Bindings文档,特别是选项绑定.它说在应用绑定时:
之前的所有选项都将被删除.
有没有办法保留现有选项?
<select data-bind="options: availableOptions, optionsText: 'name', value: selectedOption">
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
<script type="text/javascript">
var option = function(name, value) {
this.name = name;
this.value = value;
};
var viewModel = {
availableOptions : ko.observableArray([]),
selectedOption : ko.observable()
};
</script>
Run Code Online (Sandbox Code Playgroud)
根据Niko的建议,我想答案是最好避免将声明性绑定与静态数据混合.如果视图不太可能更改,请将数据放在视图中(select上的选项元素).如果它是动态的,则将数据放入KO视图模型中.
在我的场景中,它是前者:
<select data-bind="value: selectedOption">
<option value="1">One</option>
<option value="2" selected>Two</option>
</select>
<script type="text/javascript">
var viewModel = {
selectedOption : ko.observable()
};
</script>
Run Code Online (Sandbox Code Playgroud)