深入理解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 控制弹出窗口
Apr 10 Javascript
又一个小巧的图片预加载类
May 05 Javascript
JavaScript 无符号右移运算符
Apr 17 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
JS实现复选框的全选和批量删除功能
Apr 05 Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
ligerUI的ligerDialog关闭刷新的方法
Sep 27 Javascript
JavaScript变量基本使用方法实例分析
Nov 15 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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python生成密码字典的方法
2018/07/06 Python
python文件拆分与重组实例
2018/12/10 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Python常用数据分析模块原理解析
2020/07/20 Python
python3.7调试的实例方法
2020/07/21 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
支行行长岗位职责
2015/02/15 职场文书
红色影片观后感
2015/06/18 职场文书
个人催款函范文
2015/06/23 职场文书