最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular-ngSanitize模塊-$sanitize服務詳解

 更新時間:2017年06月13日 10:29:45   作者:流浪貓の窩  
本篇文章主要介紹了angular-ngSanitize模塊-$sanitize服務詳解 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本篇主要講解angular中的$sanitize這個服務.此服務依賴于ngSanitize模塊.

要學習這個服務,先要了解另一個指令: ng-bing-html.

顧名思義,ng-bind-html和ng-bind的區(qū)別就是,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">
 <table class="table table-bordered" ng-controller="ctrl">
  <caption>通過ngSanitize模塊的$sanitize服務解析html</caption>
  <thead>
  <tr>
   <th>使用的指令</th>
   <th>格式化方法</th>
   <th>指令的寫法</th>
   <th>解析結果</th>
  </tr>
  </thead>
  <tbody>
  <tr>
   <td>ng-bind-html</td>
   <td>使用內置的$sanitize <br/>(不需要出現(xiàn)在js里,只要模型添加了ngSanitize模塊, <br/>然后使用ng-bind-html,它的值就自動通過$sanitize編譯)</td>
   <td><pre>&lt;div ng-bind-html="myHtml"&gt;<br>&lt;/div&gt;</pre></td>
   <td><div ng-bind-html="myHtml"></div></td>
  </tr>
  <tr>
   <td>ng-bind-html</td>
   <td>使用$sce的trustAsHtml方法編譯<br/>(以后會細講$sce服務,這里不是重點)</td>
   <td><pre>&lt;div ng-bind-html="trustHtml"&gt;<br>&lt;/div&gt;</pre></td>
   <td><div ng-bind-html="trustHtml"></div></td>
  </tr>
  <tr>
   <td>ng-bind</td>
   <td>不編譯</td>
   <td><pre>&lt;div ng-bind="myHtml"&gt;<br>&lt;/div&gt;</pre></td>
   <td><div ng-bind="myHtml"></div></td>
  </tr>
  </tbody>
 </table>
 <a class="btn btn-default"  rel="external nofollow" role="button">plunker</a>
</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)
});

結果:

下面來具體說明一下這個栗子:

表格第一行: myHtml是一段字符串,但是它的內容是一段html,使用ng-bind-html可以把它作為元素的.html()綁定給元素.在這里我們給模塊添加依賴 'ngSanitize' ,(需要鏈入angular-sanitize.min.js).然后使用ng-bind-html,$sanitize會自動對myHtml進行凈化.

所以我們看到結果,myHtml是被作為html填充到div里面的,但是不再是原來的myHtml,而是這樣的:

      

可以看到,$sanitize會把標簽的屬性都移除,以及綁定在元素上的事件.僅保留了標簽和內容.

*記住,$sanitize指令本身不會出現(xiàn)在js代碼里.直接使用ng-bind-html就行了.但如果這里不給模塊添加依賴ngSanitize,是會報錯的.

表格第二行: trustHtml 是myHtml通過$sce.trustAsHtml() 處理以后的返回值.所以它不再經過$sanitize服務的凈化.直接作為元素的.html()綁定給元素,所以我們看到myHtml被完整的填充到了div里,保留了所有的屬性和事件,這一行的內容不依賴于ngSanitize模塊,$sce服務是內置的.

表格第三行: 不使用ng-bind-html指令.當使用ng-bind指令時,綁定的值就作為字符串填充到元素里,這個沒什么好講的.

完整代碼: https://github.com/OOP-Code-Bunny/angular/tree/master/ngSanitize

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Angular 4 表單快速入門

    詳解Angular 4 表單快速入門

    本篇文章主要介紹了詳解Angular 4 表單快速入門,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • AnjularJS中$scope和$rootScope的區(qū)別小結

    AnjularJS中$scope和$rootScope的區(qū)別小結

    這篇文章給大家整理了關于AnjularJS中$scope和$rootScope的區(qū)別,文中運用實例代碼介紹的很詳細,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • 詳解AngularJS中module模塊的導入導出

    詳解AngularJS中module模塊的導入導出

    本文給大家介紹angularjs中module模塊的導入導出,涉及到angularjs module相關知識,對angularjs module感興趣的朋友一起看看吧
    2015-12-12
  • AngularJS 使用$sce控制代碼安全檢查

    AngularJS 使用$sce控制代碼安全檢查

    SCE,即strict contextual escaping,我的理解是 嚴格的上下文隔離 ...翻譯的可能不準確,但是通過字面理解,應該是angularjs嚴格的控制上下文訪問,通過本文給大家介紹AngularJS 使用$sce控制代碼安全檢查,對angularjs sce相關知識感興趣的朋友一起學習吧
    2016-01-01
  • Angular動畫實現(xiàn)的2種方式以及添加購物車動畫實例代碼

    Angular動畫實現(xiàn)的2種方式以及添加購物車動畫實例代碼

    這篇文章主要給大家介紹了關于Angular動畫的2種方式以及添加購物車動畫的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • 詳解使用angular-cli發(fā)布i18n多國語言Angular應用

    詳解使用angular-cli發(fā)布i18n多國語言Angular應用

    這篇文章主要介紹了詳解使用angular-cli發(fā)布i18n多國語言Angular應用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • angular4中引入echarts的方法示例

    angular4中引入echarts的方法示例

    這篇文章主要介紹了angular4中引入echarts的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • angularjs創(chuàng)建彈出框實現(xiàn)拖動效果

    angularjs創(chuàng)建彈出框實現(xiàn)拖動效果

    這篇文章主要為大家詳細介紹了angularjs創(chuàng)建彈出框實現(xiàn)拖動效果的相關資料,angularjs modal模態(tài)框創(chuàng)建可拖動的指令,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 關于angular js_$watch監(jiān)控屬性和對象詳解

    關于angular js_$watch監(jiān)控屬性和對象詳解

    下面小編就為大家?guī)硪黄P于angular js_$watch監(jiān)控屬性和對象詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Angular 2父子組件數據傳遞之局部變量獲取子組件其他成員

    Angular 2父子組件數據傳遞之局部變量獲取子組件其他成員

    這篇文章主要給大家介紹了關于Angular 2父子組件之間數據傳遞之局部變量獲取子組件其他成員的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07

最新評論

郸城县| 建德市| 阜宁县| 舞钢市| 司法| 稻城县| 许昌市| 贞丰县| 蒙阴县| 玉龙| 新邵县| 刚察县| 中牟县| 开阳县| 曲松县| 灌云县| 浠水县| 荆州市| 西峡县| 嘉善县| 恩施市| 都昌县| 淅川县| 鄢陵县| 沅江市| 禹城市| 五常市| 长阳| 嘉黎县| 柯坪县| 久治县| 榆林市| 晋江市| 安乡县| 山阴县| 海口市| 大丰市| 莎车县| 凤山县| 洪泽县| 昂仁县|