当前位置:首页 > 日记 > 正文

angularjs实现搜索的关键字在正文中高亮出来

angularjs实现搜索的关键字在正文中高亮出来

1、定义高亮 filter

我们希望搜索的关键字在正文中高亮出来,正文内容就是过滤器的第一个参数,第二个参数就是搜索关键字,这样,我们的过滤器将会有两个参数了。

高亮的原理很简单,将需要高亮的内容使用 span 标记隔离出来,再加上一个高亮的 class样式 进行描述就可以了。

app.filter("highlight", function($sce, $log){  var fn = function(text, search){    $log.info("text: " + text);    $log.info("search: " + search);    if (!search) {      return $sce.trustAsHtml(text);    }    text = encodeURIComponent(text);    search = encodeURIComponent(search);    var regex = new RegExp(search, 'gi')    var result = text.replace(regex, '<span class="highlightedTextStyle">$&</span>');    result = decodeURIComponent(result);    $log.info("result: " + result );    return $sce.trustAsHtml(result);  };  return fn;});

$sce, 和 $log 是 angular 提供的两个服务,其中 $sce 服务需要使用 ngSanitize 模块。关于这个模块,可以参考:angular-ngSanitize模块-$sanitize服务详解

2、定义html视图

<div ng-controller="search">      <div>        <input type="text" ng-model="notify.search" value=""/>      </div>      <!--text内容会高亮显示搜索关键字-->      <div ng-bind-html="text | highlight:notify.search">      </div></div>

3、控制器

app.controller("search", function($scope){  $scope.text = "hello, world. hello, world. hello, world. this is filter example.";  $scope.notify.search = "";})

注意在控制器中引入过滤器highlight

当搜索的关键字为数字时,如"1",报如下错误:(输入汉字时没有问题)

一些解决办法:

1.直接try catch处理,这样太简单了,并且会导致新的问题出现

2.把escape全部改成encodeURIComponent编码,试了一下不能解决问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

那笔不能使用VueCLI的问题解决方法

那笔不能使用VueCLI的问题解决方法

问题解决方法,电脑软件,VueCLI,写一个基于Vue项目Vue CLI时,你遇到了一个小坑,和CSS使用手写笔,但它总是错误在编译时。 来回来回几十次,最后我被折腾了起来: 1。在package.json写文件的依赖: 针式装载机:^ 2.5.0 笔:0.52.4 然后我安装插件CMPM是…

PS简单快速制作木板雕刻画效果

PS简单快速制作木板雕刻画效果

木板,效果,快速,简单,电脑软件,   个人觉得还是简单实用哈,需要做雕刻木板效果的童鞋可以帮到你,教程比较简单易学 完全可以记住操作过程,下面跟小编来了解一下吧!PS简单快速制作木板雕刻画效果最终效果:首先导入花边素材,进行滤镜/…

Word中纸张方向水平纵向方向的设置

Word中纸张方向水平纵向方向的设置

方法,设置,纵向,纸张,电脑软件,我们需要设置纸页上水平和垂直方向出现大量时间相同的文件,如何设置页面,今天在这个词同时水平和垂直方向,萧边教你一页纸的方向在同一时间、水平和垂直法字。 字的步骤设置页纸的水平纵向方向。 创建一个新的…

安全设置微软IIS服务器的三个小技

安全设置微软IIS服务器的三个小技

服务器,设置,小技巧,电脑软件,IIS,  你的网站是不是常常被黑,或者一不注意就成了黑客的&ldquo;肉鸡&rdquo;?对于Web网站服务器来说,如果不进行安全设置,很容易被黑客&ldquo;盯上&rdquo;,随时都有被入侵的危险。什么?你觉得安全设置很复杂?没…

如何为CheckBoxList和RadioButtonL

如何为CheckBoxList和RadioButtonL

滚动条,何为,电脑软件,RadioButtonList,CheckBoxList,如何给CheckBoxList和RadioButtonList添加滚动条?继承基类CheckBoxList和RadioButtonList,添加滚动属性,重写Render方法即可。属性列表:#region 滚动控制 private bool _ShowScrollBar =…

ps滤镜制作彩色拉丝效果

ps滤镜制作彩色拉丝效果

滤镜,彩色,效果,电脑软件,ps,   这是一个用photoshop滤镜制作彩色拉丝效果的教程,制作难度不大,效果也很不错,教程比较基础,适合刚入门的朋友学习。感兴趣的朋友可以跟着教程学习制作一下!photoshop滤镜制作彩色拉丝效果最终效果图…

nodejs密码加密中生成随机数的实例

nodejs密码加密中生成随机数的实例

随机数,密码,加密,实例代码,电脑软件,之前关于写了一个 nodejs密码加密中生成随机数,最近需要回顾,就顺便发到随笔上了方法一:Math.random().toString(36).substr(2)运行后的结果就是11位数的随机数方法二:1、定义函数function randomWord(ran…

PHP实现深度优先搜索算法 | DFS,De

PHP实现深度优先搜索算法 | DFS,De

深度优先搜索,算法,详解,电脑软件,PHP,本文实例讲述了PHP实现深度优先搜索算法。分享给大家供大家参考,具体如下:深度优先搜索的实现原理:实现代码:<?phpclass Search_Method{ //无向图的数组描述 private $dfs_save; //全局记录数组 priva…

ps怎么给照片中的人物画眉?  ps眉

ps怎么给照片中的人物画眉? ps眉

教程,画眉,片中,人物,电脑软件,PS怎么修理么眉毛?今天我们就来看看人物图像后期处理之修眉的教程,请看下文详细介绍。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、准备好素材。2、用多边形套索工具…

浅谈oracle与分布式数据库的区别

浅谈oracle与分布式数据库的区别

分布式数据库,浅谈,区别,电脑软件,oracle,1。分布式数据库是多个数据库,RAC仅是一个库。 在2.rac交易不存在协调问题,分布式数据库需要事务协调由于多个库。 三.分布式数据库数据存储在每个节点中,但设备一般是廉价的设备,频繁的节点故障,但对用…

浅谈Laravel队列实现原理解决问题

浅谈Laravel队列实现原理解决问题

实现原理,队列,解决问题,浅谈,电脑软件,问题公司项目使用Laravel的开发的两个项目在同一个测试服务器部署,公用同一个redis。在使用laravel中的队列时,产生冲突干扰。查找问题原因在laravel 队列的操作类Illuminate\Queue\RedisQueue.php中…

下载站mime属性设置 让IIS支持.apk

下载站mime属性设置 让IIS支持.apk

支持,文件下载,属性设置,下载站,电脑软件,下载站mime属性设置,让您的服务器支持.apk/ipa/beb/pxl/dmg等文件下载,如果是IIS6.0,让看下图:打开HTTP头--MIME类型---进行相应的设置。一般软件下载.torrentapplication/octet-stream.7zapplication/…