我想刪除一些被帶入通過這個DOM元素...有回調NG綁定,HTML不安全的AngularJS
<div ng-bind-html-unsafe="whatever"></div>
我寫了一個函數,將刪除元素,但我需要一種方法來在ng-bind-html-unsafe
完成後觸發該功能。有沒有回撥ng-bind-html-unsafe
或更好的方法?
我想刪除一些被帶入通過這個DOM元素...有回調NG綁定,HTML不安全的AngularJS
<div ng-bind-html-unsafe="whatever"></div>
我寫了一個函數,將刪除元素,但我需要一種方法來在ng-bind-html-unsafe
完成後觸發該功能。有沒有回撥ng-bind-html-unsafe
或更好的方法?
我會在你的演示移動HTML到directive
:在指令
<div ng-bind-html-unsafe="whatever"></div>
我會根據我的需要操縱的HTML,我在這裏立足本上的假設,因爲我不知道怎麼樣經常或如何whatever
變量被更新,所以通用的解決方案將是一個$watch
聽衆超過這個變量是這樣的:
$scope.$watch('whatever',function(newValue,oldValue, scope){
//do something
});
所有這些代碼在我的新指令,可能你會想用postLink
函數
這裏是關於這個的the Documentation from Angular。
後鏈接功能 鏈接子元素後執行。在後鏈接功能中進行DOM轉換是安全的。
ng-bind-html-unsafe已經從angular的當前版本(1.2+)中刪除。我會建議在新版本的angular中使用$ sanitize服務。您需要包含清理庫並將其添加到模塊中。
這樣,一旦清理操作完成,您就可以做任何事情,而不用擔心回調。
一個快速和骯髒的實施:
<!doctype html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.js"></script>
<script src="libs/angular/angular-sanitize.js"></script>
</head>
<body ng-app="myApp">
<div ng-controller="myController">
<div>{{sanitized}}</div>
</div>
<script>
angular.module('myApp', ['ngSanitize'])
.controller('myController', ['$scope', '$sanitize', function($scope, $sanitize) {
$scope.sanitized = $sanitize('someTextFromSomeSource');
// Do whatever you want here with the cleaned up text
}])
</script>
</body>
</html>
的內容是靜態的,但包括外部CSS文件的引用。我試圖刪除那些引用,像...'querySelectorAll('[rel =「stylesheet」]')'所以我只需要知道第一次加載後。 – Kirkland
你不會在你的控制器中操作HTML,這是不正確的做法,該指令有你所需要的。這是角度推薦的。 – Dalorzo
在ng-bind-html-unsafe完成之前或之後,指令是否會在元素上執行? – Kirkland