您可以创建自己的自定义过滤器,根据搜索字符串更改输入:
angular.module('app').filter('searchfilter', function() {
return function (input, query) {
var r = RegExp('('+ query + ')', 'g');
return input.replace(r, '<span class="super-class">$1</span>');
}
});
这可行,但过滤器返回 html,因此您需要告诉 Angular 将结果视为 html。为了做到这一点,您需要包括ng消毒 http://code.angularjs.org/1.0.2/angular-sanitize.min.js作为模块依赖项并插入结果ng-bind-html
.
这是一个完整的演示:
<div ng-app="app">
<div ng-controller="Ctrl">
<input ng-model="search" placeholder="search a fruit" />
<ul>
<li ng-repeat="fruit in fruits| filter:search | limitTo:10" ng-bind-html="fruit | searchfilter:search" ></li>
</ul>
</div>
</div>
和角度部分:
angular
.module('app', ['ngSanitize'])
.controller('Ctrl', function($scope){
$scope.fruits = 'apple orange banana pineaple grape plumb strawberry lemon lime'.split(' ');
})
.filter('searchfilter', function() {
return function (input, query) {
return input.replace(RegExp('('+ query + ')', 'g'), '<span class="super-class">$1</span>');
}
});
这是在线演示:http://jsfiddle.net/gion_13/ZDWdH/2/ http://jsfiddle.net/gion_13/ZDWdH/2/.