我正在将一个集合绑定到一个 select multi,集合中的一些项目也在第二个集合中,我想将这些设置为 select multi 中的 selectedOptions。
我希望使用 ko.utils.arrayFilter 来执行此操作,但似乎无法从另一个集合中过滤出一个集合。
http://jsfiddle.net/dumbarse/BcUBK/
<select data-bind="options:availableThings,optionsText: 'Title', selectedOptions: selectedComputeThings" size="5" multiple="true"></select>
var initialThingsModel = [
{"Id":1,"Title":"First"},
{"Id":2,"Title":"Next"},
{"Id":3,"Title":"Another"},
{"Id":4,"Title":"Last"}
];
var initialSelectedThingsModel = [
{"Id":2,"Title":"Next"},
{"Id":4,"Title":"Last"}];
var viewModel = {
availableThings: ko.observableArray(initialThingsModel),
selectedThings: ko.observableArray(initialSelectedThingsModel)
};
viewModel.selectedComputeThings = ko.computed(function() { return ko.utils.arrayFilter(viewModel.availableThings(), function(item) { return item.Id == selectedThings.Id;}) });
ko.applyBindings(viewModel);