淘汰赛中的嵌套依赖项

时间:2012-09-19 11:35:12

标签: knockout.js

我希望在下拉列表更改时更改集合。我在模型中有太多数组:

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数组。

我该怎么做?

1 个答案:

答案 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