如何使用多选,挖空和对象预先填充包含所选项目的列表

时间:2017-04-29 23:19:05

标签: javascript html object knockout.js

我在使用Knockout的多选中有一个对象列表。但是,当我尝试预先设置选择的对象时,没有任何内容显示为已选中。在我的例子中,我需要做些什么才能让Ham出现?

HTML:

<div class='liveExample'> 
    <p>Your values:</p>
    <select multiple="multiple" height="5" data-bind="options:allItems, selectedOptions:selectedItems, optionsText: 'Name', optionsValue: 'Id'"> </select>
</div>

使用Javascript:

var BetterListModel = function () {
    this.allItems = ko.observableArray([{Id: 1, Name: "Ham"}, {Id: 2, Name: "Cheese"}]); // Initial items
    this.selectedItems = ko.observableArray([{Id: 1, Name: "Ham"}]);                                // Initial selection

};

ko.applyBindings(new BetterListModel());

JS Fiddle,举例说明我正在尝试做什么。 https://jsfiddle.net/TwistedPurpose/e5qh9tq7/

1 个答案:

答案 0 :(得分:1)

好的,这就是解决方案,你需要改变你重新编写阵列的方式。

由此:

this.selectedItems = ko.observableArray([{Id: 1, Name: "Ham"}]);

对此:

this.selectedItems = ko.observableArray([1]);

此外,如果您想选择多个,您可以这样做:

this.selectedItems = ko.observableArray([1, 2]);