我希望在下拉列表更改时更改集合。我在模型中有太多数组:
function Model(data) {
this.Stuff = data.Stuff;
this.Filter = data.Filter;
this.SelectedFilterOption = ko.observalbe();
}
html是这样的:
<select data-bind="options: Filter, optionsText: 'Name', value: SelectedFilterOption"></select>
<div data-bind="foreach: Stuff">
<label data-bind="text: Name"></label><br/>
</div>
我想要实现的是,当用户更改select
时,应使用select的值更新和过滤stuff
数组。
我该怎么做?
答案 0 :(得分:1)
我建议在模型中添加一个返回过滤数组的计算值,该数组将根据选择的当前值进行过滤。
function Model () {
....
this.FilteredStuff = ko.computed(function () {
return ko.utils.arrayFilter(self.Stuff(), function(item) { return item == self.SelectedFilterOption () } );
});
}
<div data-bind="foreach: FilteredStuff">
<label data-bind="text: $data"></label><br/>
</div>
工作fiddle