深入理解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 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
jquery实现全选功能效果的实现代码
May 05 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 05 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
小程序实现左滑删除效果
Jul 25 Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 Javascript
iview实现动态表单和自定义验证时间段重叠
Jan 10 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 清除网页病毒的方法
2008/12/05 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python中取整的几种方法小结
2017/01/06 Python
将python代码和注释分离的方法
2018/04/21 Python
python中的json总结
2018/10/11 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
简历里的自我评价范文
2014/02/24 职场文书
青安岗事迹材料
2014/05/14 职场文书
旅游文化节策划方案
2014/06/06 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python