将现有选择选项绑定到Knockout视图模型

时间:2012-04-20 16:31:11

标签: knockout.js

我对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>

2 个答案:

答案 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填充视图模型