AngularJS中如何绑定html内容
来源:互联网 发布:淘宝积分换购物券 编辑:程序博客网 时间:2024/06/06 00:40
问题
AngularJS中,通过ng-model为DOM绑定的值默认显示为文本,即使绑定的值中含有HTML标签,也会被解析成安全字符串显示为常量。
但是,如果我们就是希望此DOM以HTML方式显示绑定的内容,该怎么办呢?
解决方案
我推荐使用ng-bind-html命令 + 筛选器的方式,这样使代码比较清楚明了。
请看下述例子:
<div class="msg-item-detail" ng-bind-html="messageItem.content|to_html">
上述代码中,为此DIV绑定了messageItem.content的值,并且使用了筛选器”to_html”,
看看“to_html”是如何实现的吧:
define(function (require, exports,module ) { module.exports = function(app){ app.register.filter('to_html', ['$sce', function ($sce) { return function (text) { return $sce.trustAsHtml(text); }; } ]); }});
此时,你还需要搞懂传入的text变量是否从其它地方来,是否来源于其它的输入框,假如真如此的话,
那一旦用户在输入框输入了script标签并且alert了一些东西,
那么,在这里,这些js就会被执行。
所以使用ng-bind-html方法来绑定数据时需要谨慎,必要的时候可先对text进行htmlEncode
function textEncode(str) { str = str.replace(/&/gi, '&'); str = str.replace(/</g, '<'); str = str.replace(/>/g, '>');... return str; }
我通常使用的方法是利用jquery将特殊字符过滤。如果 str = ‘你好<script>alert(1)</script>’
我只需要执行 str = $('<div>').text(str).html();
就可以解决此问题了,此时可以将str作为参数传入$sce.trustAsHtml(str)
中了。
effevo技术团队出品 (https://effevo.com)
0 0
- AngularJS中如何绑定html内容
- angularJS 中html 标签绑定样式,ng-class的使用
- angularjs 数据绑定显示html
- Angularjs动态绑定HTML文本
- AngularJS中,如何给动态生成的元素绑定事件
- AngularJS表达式中的HTML内容
- HTML中动态生成内容的事件绑定问题
- HTML中动态生成内容的事件绑定问题
- HTML中动态生成内容的事件绑定问题
- angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
- AngularJS 双向绑定 <input type='file'>中文件名,文件内容
- AngularJS 2 中如何实现ng-bind-html
- AngularJS 2 中如何实现ng-bind-html
- angularJS 如何绑定file表单的change?
- EXTjs中如何获取Panel中html的内容
- AngularJS中插入HTML片段
- angularjs中防止HTML转义
- angularjs双向绑定input内容框防止抖动方法
- 传智播客:详解企业官网设计流程
- System.arraycopy 本地方法 源代码分析
- 《第一行代码——Android》之日志工具介绍
- 汽车之家代码片段
- 交情
- AngularJS中如何绑定html内容
- lua的类
- Android-连续按两次返回键实现应用程序退出
- instanceof
- 淘宝动态配置diamond-client 准备工作
- UITableView Plain下的section取消顶部粘连
- imageView图片自动360旋转
- Linux:ssh_config快速访问服务器
- erlang游戏源码--英雄远征分析