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


Posted in Javascript onJune 13, 2017

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",报如下错误:(输入汉字时没有问题)

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

一些解决办法:

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

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

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

Javascript 相关文章推荐
javascript eval和JSON之间的联系
Dec 31 Javascript
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
百度地图自定义控件分享
Mar 04 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
Sep 06 Javascript
js 获取元素所有兄弟节点的实现方法
Sep 06 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
canvas实现图像截取功能
Feb 06 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
angular-ngSanitize模块-$sanitize服务详解
Jun 13 #Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 #Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 #jQuery
Javascript实现的StopWatch功能示例
Jun 13 #Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 #Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 #Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
Jun 13 #Javascript
You might like
页面乱码问题的根源及其分析
2013/08/09 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
PHP钩子实现方法解析
2019/05/21 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
助理政工师申报材料
2014/06/03 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
会计学习心得体会
2014/09/09 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
担保书范文
2019/07/09 职场文书
python 破解加密zip文件的密码
2021/04/22 Python