国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入理解AngularJS中的ng-bind-html指令和$sce服務

2019-11-20 09:02:55
字體:
來源:轉載
供稿:網友

前言

Angularjs的強大之處之一就是他的數據雙向綁定這一牛B功能,我們會常常用到的兩個東西就是ng-bind和針對form的ng-model。

但在我們的項目當中會遇到這樣的情況,后臺返回的數據中帶有各種各樣的html標簽。

如:

$scope.currentWork.description = “hello,<br><b>今天我們去哪里?</b>”

我們用ng-bind-html這樣的指令來綁定,結果卻不是我們想要的。

是這樣的

hello,今天我們去哪里?

怎么辦呢?

對于angular 1.2一下的版本我們必須要使用$sce這個服務來解決我們的問題。所謂sce即“Strict Contextual Escaping”的縮寫。翻譯成中文就是“嚴格的上下文模式”也可以理解為安全綁定吧。

來看看怎么用吧。

controller code:

$http.get('/api/work/get?workId=' + $routeParams.workId).success(function (work) {$scope.currentWork = work;});

HTML code:

<p> {{currentWork.description}}</p>

我們返回的內容中包含一系列的html標記。表現出來的結果就如我們文章開頭所說的那樣。這時候我們必須告訴它安全綁定。它可以通過使用$ sce.trustAsHtml() 。該方法將值轉換為特權所接受并能安全地使用“ng-bind-html”。所以,我們必須在我們的控制器中引入$sce服務

controller('transferWorkStep2', ['$scope','$http','$routeParams','$sce', function ($scope,$http, $routeParams, $sce) {$http.get('/api/work/get?workId=' + $routeParams.workId).success(function (work) { $scope.currentWork = work; $scope.currentWork.description = $sce.trustAsHtml($rootScope.currentWork.description);});

html code:

<p ng-bind-html="currentWork.description"></p>

這樣結果就完美的呈現在頁面上了:

hello 今天我們去哪里?

咱們還可以這樣用,把它封裝成一個過濾器就可以在模板上隨時調用了

app.filter('to_trusted', ['$sce', function ($sce) {return function (text) { return $sce.trustAsHtml(text);};}]);

html code:

<p ng-bind-html="currentWork.description | to_trusted"></p>

總結

以上就是關于AngularJS中的ng-bind-html指令和$sce服務的全部內容了,希望對大家的學習或者工作帶來一定的幫助,如果有問題可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涟水县| 双桥区| 巴彦淖尔市| 镇平县| 贵溪市| 澄城县| 灵山县| 连州市| 搜索| 临沂市| 金塔县| 富顺县| 民权县| 明光市| 蓬莱市| 清水河县| 厦门市| 三明市| 呈贡县| 赣榆县| 尉犁县| 沁阳市| 恭城| 西峡县| 石棉县| 双鸭山市| 平乡县| 岳阳县| 洞口县| 蒙山县| 类乌齐县| 湘潭市| 合肥市| 霍山县| 永济市| 平凉市| 盖州市| 定南县| 大化| 营口市| 洛隆县|