深入理解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 相关文章推荐
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
Jun 19 Javascript
javascript动态创建链接的方法
May 13 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
Avalonjs双向数据绑定与监听的实例代码
Jun 23 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
Vue.js的动态组件模板的实现
Nov 26 Javascript
Vue微信公众号网页分享的示例代码
May 28 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
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
简单了解django索引的相关知识
2019/07/17 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
环境保护标语
2014/06/20 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL