深入理解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 相关文章推荐
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
js子页面获取父页面数据示例
May 15 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 Javascript
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
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,不用COM,生成excel文件
2006/10/09 PHP
建立文件交换功能的脚本(二)
2006/10/09 PHP
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php简单smarty入门程序实例
2015/06/11 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
vue组件生命周期详解
2017/11/07 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
详解Python当中的字符串和编码
2015/04/25 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
详解python调度框架APScheduler使用
2017/03/28 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python netmiko模块的使用
2020/02/14 Python
Python基于requests库爬取网站信息
2020/03/02 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
工程业务员岗位职责
2013/12/31 职场文书
迎元旦广播稿
2014/02/22 职场文书
职业生涯规划书范文
2014/03/10 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书