深入理解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实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
使用js操作css实现js改变背景图片示例
Mar 10 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
深入探究使JavaScript动画流畅的一些方法
Jun 30 Javascript
Bootstrap carousel轮转图的使用实例详解
May 17 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
RequireJS用法简单示例
Aug 20 Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 Javascript
简单了解vue中的v-if和v-show的区别
Oct 08 Javascript
解决VUE双向绑定失效的问题
Oct 29 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监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python随机生成彩票号码的方法
2015/03/05 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python绘制规则网络图形实例
2019/12/09 Python
python连接PostgreSQL过程解析
2020/02/09 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
工伤死亡理赔协议书
2014/10/20 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
小兵张嘎观后感
2015/06/03 职场文书
详解Python为什么不用设计模式
2021/06/24 Python