• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

angularjs 搞代码 4年前 (2021-12-31) 27次浏览 已收录 0个评论

这篇文章主要介绍了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> <div> </div><!--text内容会高亮显示搜索关键字--><div> </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全部改成encodeURICompo来源gao*daima.com搞@代#码网nent编码,试了一下不能解决问题

以上就是angularjs实现搜索的关键字在正文中高亮出来的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:angularjs实现搜索的关键字在正文中高亮出来

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址