0

ドロップダウン リストが変更されたときにコレクションを変更したいと考えています。モデルに配列が多すぎます:

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>

私が達成しようとしているのは、ユーザーが変更したときにselectstuff選択の値で配列を更新およびフィルタリングする必要があるということです。

どうすればいいですか?

4

1 に答える 1

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>

働くフィドル

于 2012-09-19T13:29:50.917 に答える