深入理解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 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
Feb 23 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
jQuery回到顶部的代码
Jul 09 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
原生javascript中this几种常见用法总结
Feb 24 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php不用正则验证真假身份证
2013/11/06 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
JS Timing
2007/04/21 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
详解React 条件渲染
2020/07/08 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python3.4实现邮件发送功能
2018/05/28 Python
举例讲解Python常用模块
2019/03/08 Python
序列化Python对象的方法
2020/08/01 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
领导视察欢迎词
2014/01/15 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
谢师宴学生致辞
2015/07/27 职场文书
学生会任命书范本
2015/09/21 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
详解Python牛顿插值法
2021/05/11 Python
vue里使用create, mounted调用方法
2022/04/26 Vue.js
Python 绘制多因子柱状图
2022/05/11 Python