Ica*_*rus 5 javascript object angularjs angularjs-ng-repeat angularjs-filter
我试图通过使用搜索文本框过滤ng-repeat中的嵌套对象.
给出以下对象:
$scope.items = {
"1": {
name: "First Item",
tag: "first"
},
"2": {
name: "Second Item",
tag: "second"
}
};
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
<input type="text" name="serchBox" ng-model="searchByName">
<p ng-repeat="(key, values) in items | filter:{name: searchByName}">
Using both {{key}} and {{values.name}}
</p>
Run Code Online (Sandbox Code Playgroud)
这确实不起作用.我尝试了很多东西,但是我无法正常工作.我不想改变我的对象.我经常搜索,但没有找到符合我需要的东西.
我终于得到了自己问题的答案.
我只需要创建自己的过滤器,并使用正则表达式检查对象内的属性是否具有所需的值:
app.filter('customSearchFilter', function() {
return function(input, term) {
var regex = new RegExp(term || '', 'i');
var obj = {};
angular.forEach(input, function(v, i){
if(regex.test(v.name + '')){
obj[i]=v;
}
});
return obj;
};
});
Run Code Online (Sandbox Code Playgroud)
并以这种方式将其应用于HTML:
<input type="text" ng-model="searchName" />
<ul>
<li ng-repeat="(key, val) in items | customSearchFilter:searchName">Both {{key}} and {{val.name}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我创建了这个Plunker来展示我的解决方案
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |