angularjs中ng-bind-html的用法总结


Posted in Javascript onMay 23, 2017

本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块.(这个模块需要加载angular-sanitize.js插件)

要学习这个服务,先要了解另一个指令: ng-bing-html.

顾名思义,ng-bind-html和ng-bind的区别就是,ng-bind把值作为字符串,和元素的内容进行绑定,但是ng-bind-html把值作为html,和元素的html进行绑定.相当于jq里面的.text()和.html().

但是,出于安全考虑,如果我们直接使用ng-bind-html是会报错的,ng-bind-html后面的内容必须经过一定的处理.

处理的方式有两种,一种是使用$sce服务,另一种就是使用$sanitize服务.$sce服务怎么用,在以后的文章中会独立讲解,这篇主要讲解$sanitize服务.

$sanitize会根绝一个白名单来净化html标签.这样,不安全的内容就不会被返回. 白名单是根据$compileProvider的aHrefSanitizationWhitelist和imgSrcSanitizationWhitelist函数得到的.

看一个栗子:

html:

<!DOCTYPE html>
<html ng-app="myApp">
<head>
 <title></title>
 <meta charset="utf-8">
 <script src="../angular-1.3.2.js"></script>
 <script src="angular-sanitize.min.js"></script>
 <script src="script.js"></script>
 <link type="text/css" href="../bootstrap.css" rel="external nofollow" rel="stylesheet" />
</head>
<body>
<div class="container" ng-controller="ctrl"> 
<div ng-bind-html="trustHtml"></div>
</div> 

</body> 

</html>

js:

var app =angular.module(‘myApp‘,[‘ngSanitize‘]);
app.controller(‘ctrl‘,function($scope,$sce){
  $scope.myHtml = ‘<p style="color:blue">an html\n‘ +
  ‘<em onclick="this.textContent=\‘code_bunny\‘">click here</em>\n‘ +
  ‘snippet</p>‘;
  $scope.trustHtml = $sce.trustAsHtml($scope.myHtml)
});

这样,在div内就能加载上带有html标签的内容,标签的属性以及绑定在元素上的事件都会被保留。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
Apr 06 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 Javascript
vue中使用vue-print.js实现多页打印
Mar 05 Javascript
JavaScript组合继承详解
Nov 07 Javascript
vue.js实现价格格式化的方法
May 23 #Javascript
js编写选项卡效果
May 23 #Javascript
jQuery日期范围选择器附源码下载
May 23 #jQuery
详解JavaScript数组过滤相同元素的5种方法
May 23 #Javascript
强大的 Angular 表单验证功能详细介绍
May 23 #Javascript
微信小程序 侧滑删除(左滑删除)
May 23 #Javascript
最常用的jQuery表单验证(简单)
May 23 #jQuery
You might like
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
python调用百度API实现人脸识别
2020/11/17 Python
python装饰器代码深入讲解
2021/03/01 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
性能测试工程师的面试题
2015/02/20 面试题
环保建议书300字
2014/05/14 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
老人与海读书笔记
2015/06/26 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
用python自动生成日历
2021/04/24 Python
python三子棋游戏
2022/05/04 Python
MySQL sql模式设置引起的问题
2022/05/15 MySQL
Go web入门Go pongo2模板引擎
2022/05/20 Golang