我在使用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/
答案 0 :(得分:1)
好的,这就是解决方案,你需要改变你重新编写阵列的方式。
由此:
this.selectedItems = ko.observableArray([{Id: 1, Name: "Ham"}]);
对此:
this.selectedItems = ko.observableArray([1]);
此外,如果您想选择多个,您可以这样做:
this.selectedItems = ko.observableArray([1, 2]);