2015-05-04 77 views
2

我有一個AngularJS過濾器的問題。AngularJS過濾器在某些領域與「或」條件

我不想用一個輸入搜索框來「過濾」,而是使用「OR」條件過濾多個字段的列表。

這裏是一個演示。

http://jsbin.com/wodewexetu/2/edit

我wan't過濾只有namedescription字段列表。

如果輸入:「hello」,「world」或「angular」,則不應返回任何結果。

如果我鍵入:「example」,它應該只返回第1行和第3行。

如果輸入:「description」,它應該只返回第1行和第2行。等等。

所以一般來說,我想過濾一個名稱,多個,但列表中的某些領域與「或」條件。

我能夠使「AND」條件,但它不是我所需要的。

我也搜索了很多關於這個主題,但不幸的是,這些代碼和例子都不適合我。

請提前幫忙,謝謝。

回答

1

您可以創建自己的custom filter,並申請任何你想要的功能。

在你的情況,是這樣的:

app.filter('customFilter', function() { 
    return function(items, search) { 
    if (!search) { 
     return items; 
    } 
    var searchItems = new RegExp(search.split(' ').join("|"), "i"); 
    return items.filter(function(item) { 
     return searchItems.test(item.name) || searchItems.test(item.description); 
    }); 
    }; 
}); 

看到它的工作here

+0

我正在尋找創建自定義過濾器,但無法管理它。謝謝,這正是我所需要的。 –

1

我認爲OR過濾器還不支持。我通過創建稱爲$searchable的元索引來解決它。

angular.forEach($scope.items, function (item){ 
    Item.$searchable = [item.name, item.description].join (' '); 
} 

在HTML:

<input type="text" ng-model="search.$searchable">