详解Angular.js数据绑定时自动转义html标签及内容


Posted in Javascript onMarch 30, 2017

angularJS在进行数据绑定时默认是以字符串的形式数据,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止html标签的注入攻击,但有时候需要,特别是从数据库读取带格式的文本时,无法正常的显示在页面中。

而要对html进行转义,则需要在数据绑定的html标签中使用ng-bind-html属性,该属性依赖与$sanitize,也就是需要引入angular-sanitize.js文件,并在module定义时注入该服务ngSanitize。比如:

html:

<span ng-controller = "myCtr" ng-bind-html = "htmlStr"></span>

javascript:

function myCtr($scope){

$scope.htmlStr = '<p style="color:white;background:#f60;"></p>';

};

这样可以实现html转义,但是有个问题是style这种标签会被angularJS认为是不安全的所以统统自动过滤掉,而为了保留这些就需要开启非安全模式。

如何让自动加载的数据转义html标签呢?实际上还有一种绑定方式:

html:

<div ng-repeat = "article in articles">

<div class="panel-heading">



<h4><b>{{article.title}}</b></h4>


</div>


<div class="panel-body">



<article id="word-display" ng-bind-html="article.content | trustHtml">



</article>


</div>

</div>

javascript:

success(function(data){

$scope.articles = data;

});

myApp.filter('trustHtml',function($sce){


return function(input){



return $sce.trustAsHtml(input);


}

});

其中$sce是angularJS自带的安全处理模块,$sce.trustAsHtml(input)方法便是将数据内容以html的形式进行解析并返回。将此过滤器添加到ng-bind-html所绑定的数据中,便实现了在数据加载时对与html标签的自动转义。

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

Javascript 相关文章推荐
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
Javascript优化技巧之短路表达式详细介绍
Mar 27 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
AngularJS包括详解及示例代码
Aug 17 Javascript
angular 内存溢出的问题解决
Jul 12 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 #Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 #Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 #Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 #Javascript
JavaScript mixin实现多继承的方法详解
Mar 30 #Javascript
Angular.JS中的指令引用template与指令当做属性详解
Mar 30 #Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 #jQuery
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php中几种常见安全设置详解
2010/04/06 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
python flask中静态文件的管理方法
2018/03/20 Python
python 除法保留两位小数点的方法
2018/07/16 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python检测IP地址变化并触发事件
2018/12/26 Python
使用Python实现牛顿法求极值
2020/02/10 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
我的梦想演讲稿
2014/04/30 职场文书
小平小道观后感
2015/06/09 职场文书
热血教师观后感
2015/06/10 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python