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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
用js实现层随着内容大小动态渐变改变 推荐
Dec 19 Javascript
javascript中的原型链深入理解
Feb 24 Javascript
jquery使用$(element).is()来判断获取的tagName
Aug 24 Javascript
js实现C#的StringBuilder效果完整实例
Dec 22 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 Javascript
Vue批量图片显示时遇到的路径被解析问题
Mar 28 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 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
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
Python生成不重复随机值的方法
2015/05/11 Python
python 多线程重启方法
2019/02/18 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python多线程同步之文件读写控制
2021/02/25 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
python爬取微博评论的实例讲解
2021/01/15 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
计算机应用职专应届生求职信
2013/11/12 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
大学生作弊检讨书
2014/02/19 职场文书
大学生求职信范文
2014/05/24 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
python 网络编程要点总结
2021/06/18 Python