AngularJS:过滤结果的部分并加粗

2024-01-03

我有一个像这样过滤的列表:

ng-repeat="item in items | filter:query | limitTo:10"

和搜索输入

ng-model="search.name"

它有效,但我想将结果中的查询部分加粗。

Example:

query = zza

results:

  • Li*zza*
  • Pi*zza*
  • Abc*zza*def

您可以创建自己的自定义过滤器,根据搜索字符串更改输入:

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/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:过滤结果的部分并加粗 的相关文章

随机推荐