[英]AngularJS: search multiple values on ng-model
我一直在尋找解決方案,但找不到確切的情況。 我想知道有人能幫上忙。 我有這樣的ng-repeat過濾器列表:
<ul>
<li ng-repeat="f in filterOptions">
<p>{{f.group}}</p>
<ul>
<li ng-repeat="o in f.options">
<input id="{{$parent.f.filtername}}{{$index}}" type="checkbox" ng-model="Filter.category[o.title]" ng-true-value="{{o.title}}" ng-false-value="" />
</li>
</ul>
</li>
</ul>
我的JSON:
[
{
"group": "Product Categories",
"filtername" : "category",
"options": [
{
"title": "Category A",
"alt_titles": ["Category B, Category C"]
},
{
"title": "Category 1",
"alt_titles": ["Category 2, Category 3"]
}
]
}
]
這樣,我可以成功搜索屬於o.titles的項目。 現在,我想知道應該怎么做才能搜索也屬於alt_titles的項目。
例如:如果我單擊“類別A”,它還將循環顯示“類別B”和“類別C”的項目。與類別1相同,它應顯示類別2和3上的項目。
我希望我很清楚。 請幫忙。 謝謝!
工作樣本FIDDLE
在這種情況下,您將需要一個自定義過濾器。 此處的文檔: https : //docs.angularjs.org/tutorial/step_09此處的示例: http : //plnkr.co/edit/lzyo5cTMd6FUzYw9JSq8
app.filter('MultiValueFilter',function(){
return function(list, queries){
var result = [];
var queries_regex = [];
angular.forEach(queries, function(query){
queries_regex.push(new RegExp('^' + escapeRegExp(query),'i'));
});
angular.forEach(list, function(item){
for(var i = 0; i < queries_regex.length; ++i){
if(queries_regex[i].test(item)){
result.push(item);
break;
}
}
});
return result;
};
});
基本上,此函數循環遍歷列表中的每個項目,針對一個regexp列表進行測試,如果它與某個regexp匹配,則將其壓入結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.