Bạn có thể tạo bộ lọc tùy chỉnh của riêng bạn mà làm thay đổi đầu vào dựa trên chuỗi tìm kiếm:
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>');
}
});
này hoạt động, nhưng bộ lọc trả về html, vì vậy bạn sẽ cần phải nói với góc để điều trị kết quả như html . Để thực hiện việc này, bạn cần phải bao gồm ngSanitize làm phụ thuộc của mô-đun và chèn kết quả bằng ng-bind-html
.
Dưới đây là một bản demo hoàn chỉnh:
<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>
Và phần góc:
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>');
}
});
Dưới đây là bản demo trực tuyến: http://jsfiddle.net/gion_13/ZDWdH/2/.
Nguồn
2013-07-02 19:22:49
dụ Rất hữu ích. Cảm ơn! – OpherV