2013-02-26 40 views
0

我有一個ko.observableArray,我想在應用過濾器時顯示結果。在挖空中使用多個值過濾器

這裏是我的小提琴:Fiddle

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

你可以從小提琴,請看篩選工作,如果你篩選一個值。

但我需要過濾多個值,例如。

filters: "IT","Admin" 

有沒有辦法做到這一點?

在此先感謝

回答

0

我會使用計算的observable提供過濾數組。我已經改變了您的視圖模型是一個函數,因爲我是有引用該視圖模式等要素的計算問題:

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; 
    }); 
}; 

,然後改變從綁定與到一個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/

+0

Thanx的幫助。只是我想要的。 – 2013-02-26 10:22:18