2013-08-05 183 views
1

我有一個搜索框,使用string.split(' ')將一系列用空格分隔的術語拆分爲一個數組。有沒有辦法從該數組中應用任意且可能大量的過濾器?AngularJS通過任意數量的過濾器進行過濾

+1

所以數組將定義應用哪些過濾器?你能否嘗試提供更多的細節?也許你正在努力工作的一個例子?你有沒有嘗試過任何東西? –

+0

如果我有一個「john jacob california」的搜索查詢,我想把這個字符串拆分成一個包含「john」,「jacob」和「california」的數組。我想讓數組中的每一項都成爲一個過濾器。但我不能保證每次只有三個條款,可能會有任何數量的條款,我希望能夠支持這些條款。我已經定義了10個過濾器,分割填滿了,但它不像我想的那樣動態或可擴展。 –

回答

4

到薩德相似,但實際上創建自定義過濾器模塊,而不是搞亂了控制器。這是它如何爲我工作:

<input type="text" ng-model="query"> 
<li ng-repeat="object in objects | filterFunction:query"> {{object.state}} 

.filter('filterFunction', function() { 

    return function (objects, query) { 

    // objects is the array being filtered 
    // query is the value you passed in 

    array = query.split(' '); 

    for (var i = 0, len = objects.length; i < len; i++) { 
     // filter the crap out of these objects 
    } 

    } 
}); 
+0

這工作完美。謝謝。 –

+0

對。祝你好運我的男人。 –

0

我認爲這是在那裏你會需要使用斷言函數過濾器而不是一個字符串過濾器的...

這樣的(僞):

<!--html--> 
<ul> 
    <li ng-repeat="object in objects | filter:filterFunction"> 
     {{object.description}} 
    </li> 
</ul> 

<!-- controller --> 
$scope.objects = [ your data here ]; 

$scope.filterFunction = function(searchVal) { 
    // write code that returns true or false depending 
    // on whether or not after you split searchVal any 
    // of the elements are in your data 
} 

我沒有試過,但這是文檔如何做到的。

-Thad

0

大的多在這裏進行過濾:
https://gist.github.com/i8ramin/5825377

角JS過濾器的行爲很像內置的過濾器之一,但您可以與多個值過濾,空間分開。例如「大橙圓」