深入理解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面向对象设计二 构造函数模式
Dec 20 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
jQuery中after的两种用法实例
Jul 03 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
详解Vue监听数据变化原理
Mar 08 Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
es6数值的扩展方法
Mar 11 Javascript
微信小程序websocket实现即时聊天功能
May 21 Javascript
vue-amap根据地址回显地图并mark的操作
Nov 03 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
php use和include区别总结
2019/10/13 PHP
jQuery实用基础超详细介绍
2013/04/11 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
js实现消息滚动效果
2017/01/18 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
BootStrap的双日历时间控件使用
2017/07/25 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
从python读取sql的实例方法
2020/07/21 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
实习自荐信
2013/10/13 职场文书
大学军训感言300字
2014/03/09 职场文书
元旦标语大全
2014/10/09 职场文书
专项资金申请报告
2015/05/15 职场文书
安全教育观后感
2015/06/17 职场文书
python 对图片进行简单的处理
2021/06/23 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
分享几个实用的CSS代码块
2022/06/10 HTML / CSS