我对Knockout.js很新,所以这可能是一个愚蠢的问题。
我正在阅读Bindings文档,尤其是options binding。它说在应用绑定时:
以前的所有选项都将被删除。
有没有办法保留现有选项?
<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>
答案 0 :(得分:6)
基于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>
答案 1 :(得分:0)
你使用的是什么后端?我建议将所有现有选项放入json对象并使用http://knockoutjs.com/documentation/plugins-mapping.html填充视图模型