[英]Adding strict search to multiple fields with a single textbox
有一个基本的角度应用程序,
HTML
<input type="text" ng-model="txt.name" />
<ul>
<li ng-repeat="d in data | filter: txt:strict">
<span>{{d.name}}</span>
<br />
<span>{{d.description}}</span>
<br />
<span>{{d.loremipsum}}</span>
<br />
</li>
</ul>
JS:
var app = angular.module('app', []);
app.controller("mc", function($scope){
$scope.data = [{
'name': 'asd',
'description': 'jiocioasdiasidjpoasdko',
'loremipsum': 'loremipsum'
}, {
'name': 'qwe',
'description': 'poqwpeqwpe',
'loremipsum': 'loremipsum'
}, {
'name': 'czxc',
'description': 'asdasdasd',
'loremipsum': 'loremipsum'
}]
});
我希望能够同时按name
和description
进行搜索,但不能按loremipsum
我怎样才能做到这一点?
您可以创建自定义过滤器,请参见下面的演示
var app = angular.module('app', []); app.controller("mc", function($scope) { $scope.data = [{ 'name': 'asd', 'description': 'jiocioasdiasidjpoasdko', 'loremipsum': 'loremipsum' }, { 'name': 'qwe', 'description': 'poqwpeqwpe', 'loremipsum': 'loremipsum' }, { 'name': 'czxc', 'description': 'asdasdasd', 'loremipsum': 'loremipsum' }]; }); app.filter('customFilter', function() { return function(items, string) { var filtered = []; var stringMatch = new RegExp(string, 'i'); for (var i = 0; i < items.length; i++) { var item = items[i]; if (stringMatch.test(item.name) || stringMatch.test(item.description)) { filtered.push(item); } } return filtered; }; });
<html ng-app="app"> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-controller="mc"> <input type="text" ng-model="txt.name" /> <ul> <li ng-repeat="d in data | customFilter: txt.name"> <span>{{d.name}}</span> <br /> <span>{{d.description}}</span> <br /> <span>{{d.loremipsum}}</span> <br /> </li> </ul> </body> </html>
这是使用自定义函数的示例: 自定义函数解决方案
您可能需要在自定义函数中使用match而不是===。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.