对象
StudentObj = {name : 'Me', Place : 'Bangalore',uniqueId :'233abc233' }
Html模板
<ul>
<li ng-repeat:'entry in StudentObj |filter:sText' >
<span>{{entry.name}}</span>
<span ng-bind='entry.place'></span>
</li>
</ul>
搜索过滤器
<input type='text' ng-model='sText'>
问题:
如果我搜索&#39; 233abc233 &#39;在文本过滤器中,行正在选择, 但是不应该选择。
仅在名称和地点值上,应选择行&#34;
先谢谢
答案 0 :(得分:1)
您可以使用此类过滤器仅匹配两个字段:
<li ng-repeat="entry in StudentObj | filter:{name: sText, Place: sText}">
有关如何使用过滤器的更多变体,请参阅filter。
编辑:如果您需要OR
逻辑(如果匹配任何键,则匹配),您必须滚动自己的过滤器,例如,
在控制器中:
$scope.customFilter = function (searchText) {
function comparator(a, b) {
return (''+a).toLowerCase().indexOf((''+b).toLowerCase()) > -1;
}
var lookInKeys = ['name', 'Place'];
return function (item) {
if (!searchText) {
return true; // no filter
}
for (var i = 0; i < lookInKeys.length; i++) {
var key = lookInKeys[i];
if (comparator(item[key], searchText)) {
return true; // if any key is match, return true
}
}
return false; // none of keys are match
};
};
然后在ng-repeat
中使用它,如下所示:
<li ng-repeat="entry in StudentObj | filter:customFilter(sText)">
示例plunker: http://plnkr.co/edit/Mlca2gXvXNVAXEsNbpCI?p=preview