深入理解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 相关文章推荐
JScript 脚本实现文件下载 一般用于下载木马
Oct 29 Javascript
javascript模拟select,jselect的方法实现
Nov 08 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
Underscore.js常用方法总结
Feb 28 Javascript
jQuery 常见小例汇总
Dec 14 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
Apr 30 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
vue3.0封装轮播图组件的步骤
Mar 04 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php实现的ping端口函数实例
2014/11/12 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP常用的小程序代码段
2015/11/14 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
Python实现的密码强度检测器示例
2017/08/23 Python
python正则实现计算器功能
2017/12/14 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
个人近期表现材料
2014/02/11 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
活动总结模板
2014/05/09 职场文书
医院感染管理制度
2015/08/05 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP