深入理解AngularJS中的ng-bind-html指令


Posted in Javascript onMarch 27, 2017

前言

在为html标签绑定数据的时,如果绑定的内容是纯文本,你可以使用{{}}或者ng-bind。但在为html标签绑定带html标签的内容的时候,angularjs为了安全考虑,不会将其渲染成html,而是将其当做文本直接在页面上展示。

先来看一个例子

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script src="js/angular.min.js"></script>
 <script>
 angular.module("myapp", []).controller("MyController", function ($scope) {
 $scope.content = "<h1>Hello world.</h1>";
 $scope.txt = "Hello txt world";
 });
 </script>
</head>
<body ng-app="myapp">
 <div ng-controller="MyController">
 {{content}}
 <div ng-bind="content"></div> 
 </div>
</body>
</html>

输出

深入理解AngularJS中的ng-bind-html指令

ng-bind-html指令

<div ng-bind-html="content"></div>

这时就会出现安全的错误,如图:

深入理解AngularJS中的ng-bind-html指令

但可以通过引入下面的模块,自动检测html的内容是否安全

<script src="http://apps.bdimg.com/libs/angular.js/1.5.0-beta.0/angular-sanitize.min.js"></script>

 <script>
 angular.module("myapp", ["ngSanitize"]).controller("MyController", function ($scope) {
 $scope.content = "<h1>Hello world.</h1>";
 $scope.txt = "Hello txt world";
 });
 </script>

这时刷新预览

深入理解AngularJS中的ng-bind-html指令

所以

ng-bind-html 指令是通一个安全的方式将内容绑定到 HTML 元素上。

当你想让 AngularJS 在你的应用中写入 HTML,你就需要去检测一些危险代码。通过在应用中引入 "angular-santize.js" 模块,使用 ngSanitize 函数来检测代码的安全性。 in your application you can do so by running the HTML code through the ngSanitize function.

另外一种处理方式

通过自定义过滤器,将带html标签的内容都当成安全的进行处理。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script src="js/angular.min.js"></script>
 <!--<script src="http://apps.bdimg.com/libs/angular.js/1.5.0-beta.0/angular-sanitize.min.js"></script>-->
 <script>
 angular.module("myapp", []).controller("MyController", function ($scope) {
  $scope.content = "<h1>Hello world.</h1>";
  $scope.txt = "Hello txt world";
 }).filter("safeHtml", function ($sce) {
  return function (input) {
  //在这里可以对加载html渲染后进行特别处理。
  return $sce.trustAsHtml(input);
  };
 });
 </script>
</head>
<body ng-app="myapp">
 <div ng-controller="MyController">
 {{content}}
 <div ng-bind="content"></div> 
 <!--<div ng-bind-html="content"></div>-->
 <div ng-bind-html="content|safeHtml"></div>
 </div>
</body>
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
利用JS测试目标网站的打开响应速度
Dec 01 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
js 将线性数据转为树形的示例代码
May 28 Javascript
layui实现数据表格点击搜索功能
Mar 26 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
vue.js click点击事件获取当前元素对象的操作
Aug 07 Javascript
vue2.0实战之基础入门(1)
Mar 27 #Javascript
jQuery中的deferred使用方法
Mar 27 #jQuery
Angular2利用组件与指令实现图片轮播组件
Mar 27 #Javascript
Vue 过渡实现轮播图效果
Mar 27 #Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 #Javascript
使用AngularJS2中的指令实现按钮的切换效果
Mar 27 #Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 #Javascript
You might like
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
js时间控件只显示年月
2017/01/08 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
Python 可爱的大小写
2008/09/06 Python
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Python实现购物程序思路及代码
2017/07/24 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
Python的collections模块真的很好用
2021/03/01 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
车间班长岗位职责
2013/11/30 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
初中语文教学反思
2014/02/02 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
详解Python中下划线的5种含义
2021/07/15 Python
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL