Ответ 1
Вы можете создать свой собственный фильтр, который изменяет входные данные на основе строки поиска:
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. Для этого вам нужно включить ngSanitize в качестве зависимости от модуля и вставить результат с помощью 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:
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/.