0

結果を表示するときにフィルターを適用したい ko.observableArray があります。

これが私のフィドルです:フィドル

var myViewModel = {
departments: ko.observableArray([{
        departmentname: 'IT'
    }, 
    {
        departmentname: 'Admin'
    }, 
    {
        departmentname: 'Technical'
    }, 
    {
        departmentname: 'Operations'
    }]),
filters: "IT"
};

フィドルからわかるように、1 つの値をフィルター処理するとフィルターが機能します。

しかし、複数の値をフィルタリングする必要があります。

filters: "IT","Admin" 

これを行う方法はありますか?

前もって感謝します

4

1 に答える 1

0

計算されたオブザーバブルを使用して、フィルター処理された配列を提供します。計算されたビューモデルの他の要素を参照する際に問題があったため、ビューモデルを関数に変更しました。

var myViewModel = function(){
    var self = this;
    self.departments = ko.observableArray([{
        departmentname: 'IT'
    }, {
        departmentname: 'Admin'
    }, {
        departmentname: 'Technical'
    }, {
        departmentname: 'Operations'
    }]);
    self.filters =  ko.observableArray(["IT", "Admin"]);
    self.filterdept = ko.computed(function () {
        var filteredArray = ko.utils.arrayFilter(self.departments(), function (department) {
            return self.filters().indexOf(department.departmentname) != -1;
        });

        return filteredArray;
    });
};

次に、バインディングを with から foreach に変更します。

<div data-bind="foreach: filterdept()"> <span data-bind="text: departmentname"></span>

バインディングを次のように変更します。

var vm = new myViewModel();
ko.applyBindings(vm);

http://jsfiddle.net/manzanotti/X3LMR/6/

于 2013-02-26T10:17:51.060 に答える