angularjs 可以加入html标签方法------ng-bind-html的用法总结

本篇主要讲解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函数得到的.

看一个栗子:

<!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="stylesheet" />
</head>
<body>
<div class="container">
    <table class="table table-bordered" ng-controller="ctrl">
        <thead>
        </thead>
        <tbody>
        <tr>
            <td>ng-bind-html</td>
            <td>使用内置的$sanitize <br/>(不需要出现在js里,只要模型添加了ngSanitize模块, <br/>然后使用ng-bind-html,它的值就自动通过$sanitize编译)</td>
            <td><div ng-bind-html="myHtml"></div></td>
        </tr>
        <tr>
            <td>ng-bind-html</td>
            <td>使用$sce的trustAsHtml方法编译<br/>(以后会细讲$sce服务,这里不是重点)</td>
            <td><div ng-bind-html="trustHtml"></div></td>
        </tr>
        <tr>
            <td>ng-bind</td>
            <td>不编译</td>
            <td><div ng-bind="myHtml"></div></td>
        </tr>
        </tbody>
    </table>

</div>
</body>
</html>

时间: 2024-10-11 11:08:38

angularjs 可以加入html标签方法------ng-bind-html的用法总结的相关文章

angularjs 可以加入html标签方法------ng-bind-html的用法总结(2)

angular-ngSanitize模块-$sanitize服务详解 本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一个指令: ng-bing-html. 顾名思义,ng-bind-html和ng-bind的区别就是,ng-bind把值作为字符串,和元素的内容进行绑定,但是ng-bind-html把值作为html,和元素的html进行绑定.相当于jq里面的.text()和.html(). 但是,出于安全考虑,如果我们直

Asp.net 后台添加Meta标签方法

Asp.net 后台添加Meta标签方法包括keywords,CSS.JS 下面是从Asp.net 后台添加CSS.JS.Meta标签的写法,我们这里写成函数方便以后使用.如果函数放在页面类中, Page参数也可以不要. 首先导入命名空间 using System.Web.UI.HtmlControls; 代码如下: /// /// 添加JS脚本链接 /// /// 页面 /// 路径 public void AddJS(System.Web.UI.Page page, string url)

Angularjs $scope 里面的$apply 方法 和 $watch 方法

Angularjs $scope 里面的$apply 方法 和 $watch 方法 学习要点:1. Angularjs $scope 里面的$apply 方法2. Angularjs $scope 里面的$watch 方法 1. Angularjs $scope 里面的$apply 方法$apply 方法作用:Scope 提供$apply 方法传播 Model 的变化$apply 方法使用情景:AngularJS 外部的控制器( DOM 事件.外部的回调函数如 jQuery UI 空间等)调用了

JS获取标签方法及兼容处理

document.getElementById('Id名');  // 所有浏览器 document.getElementsByTagName('标签名'); // 所有浏览器 document.getElementsByName('name'); // 所有浏览器 document.getElementsByClassName('类名');       // 除ie9以下,均支持 如需通过类名获取标签,并兼容所有浏览器,则需做兼容处理: 1 /* 2 * 功能: 通过类名获取一定范围内的标签数

AngularJS 防止页面闪烁的方法

我们知道在应用的页面或者组件需要加载数据时,浏览器和angular渲染页面都需要消耗一定的时间.这里的间隔可能很小,甚至让人感觉不到区别:但也可能很长,这样会导致让我们的用户看到了没有被渲染过的页面. 这种情况被叫做Flash Of Unrendered Content (FOUC)(K)?and is always unwanted.下面我们将要介绍几个不同的方式防止这种情况发生在我们的用户身上. 1.ng-cloak ng-cloak指令是angular的内置指令,它的作用是隐藏所有被它包含

angularjs中常用的工具方法

一.angular.bind(self, fn, args) 1.作用:返回一个新的函数,绑定这个函数的this指向self 2.参数: self:新函数的上下文对象 fn:需要绑定的函数 args:传递给函数的参数 3.返回值:this指向self的新函数 4.备注:bind会根据你的参数类型来决定调用call或apply,所以args可以是一个个数据,也可以是一个数组. 二.angular.copy(source, [destination]) 1.作用:对象的深拷贝 2.参数: sourc

angularjs 1.3 综合学习 (one way bind , ng-if , ng-switch , ng-form ,ng-model , ng-message)

主要讲解1.3后的一些新功能,和一些以前没有介绍的小功能 (ng-if,ng-switch). 1.one way bind 这个之前的版本已经有人自己实现了,但是在1.3之后,angularjs 有自带的了.用法极其简单 . <div ng-app="app" ng-controller="ctrl"> {{ ::value }} </div> <script src="../../js/Stooges.js"&g

[Angularjs]处理页面闪烁的方法

摘要 在使用{{}}绑定数据的时候,页面加载会出现满屏尽是{{xxx}}的情况.数据还没响应,但页面已经渲染了.这是因为浏览器和angularjs渲染页面都需要消耗一定的时间,这个间隔可能很小,甚至让人感觉不到,这种情况一切正常,但这个时间也可能很长,这时候用户可能会看到满屏尽是{{xxxx}}.这种情况被叫做“Flash Of Unrendered Content (FOUC)(K)?and is always unwanted.”. 问题 为了图方便,我们很喜欢使用下面的做法 <div>

AngularJS 模块中的run方法

AngularJS中的run方法初始化全局数据,只对全局作用域起作用,如$rootScope.多个控制器之间可以共享数据,如下代码所示: [html] <script type="text/javascript"> var m1 = angular.module('myApp',[]); m1.run(['$rootScope',function($rootScope){ $rootScope.name = 'hello'; }]); console.log( m1 );