Można zrobić swój własny filtr, który zmienia wejście w oparciu o ciąg frazy:
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>');
}
});
To działa, ale filtr zwraca HTML, więc trzeba będzie powiedzieć kątowe traktować wynik jako html . Aby to zrobić, musisz dołączyć ngSanitize jako zależność od modułu i wstawić wynik z ng-bind-html
.
Oto pełna demo:
<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>
A kątowa część:
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>');
}
});
Oto demo on-line: http://jsfiddle.net/gion_13/ZDWdH/2/.
Bardzo dobrym przykładem. Dzięki! – OpherV