详解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 相关文章推荐
JavaScript基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
Jun 07 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
完美实现八种js焦点轮播图(下篇)
Apr 20 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
May 01 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 Javascript
vue实现表格合并功能
Dec 01 Vue.js
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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
使用PHP开发留言板功能
2019/11/19 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
python调用windows api锁定计算机示例
2014/04/17 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
python函数局部变量用法实例分析
2015/08/04 Python
Python IDLE入门简介
2017/12/08 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
Python实现FLV视频拼接功能
2020/01/21 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
家属联谊会致辞
2015/07/31 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python