3

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

2 回答 2

6

根据 Niko 的建议,我想答案是最好避免将声明性绑定与静态数据混合。如果视图不太可能更改,则将数据放在视图中(选择上的选项元素)。如果它是动态的,则将数据放入 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>
于 2012-04-21T19:33:12.407 回答
0

你用的是什么后端?我建议将所有现有选项放入 json 对象中,并使用http://knockoutjs.com/documentation/plugins-mapping.html填充视图模型

于 2012-04-20T17:24:37.270 回答