博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular-ngSanitize模块-linky过滤器详解
阅读量:6680 次
发布时间:2019-06-25

本文共 2086 字,大约阅读时间需要 6 分钟。

本篇主要讲解angular中的linky这个过滤器.此过滤器依赖于ngSanitize模块.

linky能找出文本中的链接,然后把它转换成html链接.什么意思,就是说,一段文本里有一个链接,但是这个链接没有被a标签嵌套,linky能把它找出来,然后给它加上a标签并且给a链接添加正确的href属性,还可以设置打开的方式(_blank,_self,等...).

它查找链接是根据这些关键词来的: http/https/ftp/mailto/,或者就直接是一个email地址.

下面来看栗子:

html:

    
通过ngSanitize模块的linky过滤器编译链接
过滤方式 指令的写法 解析结果
使用linky编译链接
<div ng-bind-html="myHtml | linky">
</div>
使用linky+target编译链接
<div ng-bind-html="myHtml | linky:'_blank'">
</div>
不编译链接
<div ng-bind-html="myHtml">
</div>
plunker

js:

var app =angular.module('myApp',['ngSanitize']);app.controller('ctrlLinky',function($scope,$sce){    $scope.myHtml = '

'+ '下面这些都应该是链接:\n'+ 'http://angularjs.org/,\n'+ 'mailto:us@somewhere.org,\n'+ 'another@somewhere.org,\n'+ 'and one more: ftp://127.0.0.1/.\n'+ '

';});

结果:

点击查看效果:  

下面来具体说明一下这个栗子:

表格第一行:

myHtml是一段html,使用ng-bind-html来绑定(关于这个,详见),然后使用linky过滤器,使myHtml里的链接都转换为可点击的a链接.

*注意,一旦使用了linky过滤器,则$sanitize净化不能生效,ng-bind-html也不能被解析为元素的html,仅能对链接部分进行转换.所以这里的p标签还是出现在了内容里.而不是作为html的p标签.

表格第二行:

给linky添加参数: '_blank',表示链接在新窗口中打开.其余同上.

表格第三行:

不使用linky过滤器,所以$sanitize服务会净化myHtml,然后作为.html()绑定到div里.所以可以看到,p标签是成为标签了,而不是文本内容的一部分.

 

另外,注入$filter服务后可以这样用:

$filter('linky')(htmlString,target)

可以得到htmlString经过linky过滤器编译的结果.

eg:

app.controller('ctrlLinky',function($scope,$sce,$filter){    $scope.myHtml = '

'+ '下面这些都应该是链接:\n'+ 'http://angularjs.org/,\n'+ 'mailto:us@somewhere.org,\n'+ 'another@somewhere.org,\n'+ 'and one more: ftp://127.0.0.1/.\n'+ '

'; console.log($filter('linky')($scope.myHtml,'_blank'))});

结果:

<p>下面这些都应该是链接:
http://angularjs.org/,
us@somewhere.org,
another@somewhere.org,
and one more: ftp://127.0.0.1/.
</p>

 

相关阅读: 

参考原文: 

完整代码: 

转载地址:http://hcnao.baihongyu.com/

你可能感兴趣的文章
sqlite 打开数据库
查看>>
http://xpleaf.blog.51cto.com/
查看>>
Thrift使用教程(Java版本)
查看>>
我的友情链接
查看>>
通过SSH证书实现Putty免密码登录CentOS
查看>>
Java IO类库之Bits
查看>>
ERROR 1217 (23000): Cannot delete or update a pare
查看>>
oracle 11g RAC搭建 ASM存储
查看>>
函数学习-bytearray()
查看>>
CentOS7安装配置telnet-server
查看>>
GitOSC和GitHub上传项目
查看>>
全局静态变量析构和线程结束先后顺序问题
查看>>
[PYTHON] 核心编程笔记(12.Python模块)
查看>>
windows下MD5-SHA1校验
查看>>
Linux学习记录-2015-08-20--常用命令1
查看>>
Android工程引用另外一个工程的正确/错误方法
查看>>
Testlink使用介绍
查看>>
【动态规划】0-1背包问题原理和实现
查看>>
c3p0详细配置
查看>>
jsfl导出库里面的PNG图片
查看>>