È possibile rendere il proprio filtro personalizzato che altera l'ingresso in base alla stringa di ricerca:
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>');
}
});
questo funziona, ma il filtro restituisce html, quindi sarà necessario dire a angolare per trattare il risultato come html . Per fare ciò, è necessario includere ngSanitize come dipendenza del modulo e inserire il risultato con ng-bind-html
.
Ecco una demo completa:
<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>
E la parte angolare:
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>');
}
});
Ecco la demo online: http://jsfiddle.net/gion_13/ZDWdH/2/.
fonte
2013-07-02 19:22:49
esempio molto utile. Grazie! – OpherV