2013-12-13 29 views
0

我想呈現一些不安全的HTML(基本上是一個HTML代碼片段,其中一些內嵌樣式),並有下面的代碼在我看來:AngularJS - ngBindHtml和「不安全」的HTML

<div ng-repeat="snippet in snippets"> 
    <div ng-bind-html="snippet.content"></div> 
</div> 

我所有的造型被刪除...

我聽說過使用ngBindHtmlUnsafe的人,但我找不到對它的引用,只是簡單地把ng-bind-html-unsafe不呈現任何東西。

任何幫助,將不勝感激。

+0

您使用的是什麼AngularJS版本? –

+0

您需要包含您正在嘗試使用的html字符串。 – m59

回答

6

您可以使用$sce.trustAsHtml來繞過它。見documentation

self.snippet.content = $sce.trustAsHtml('some html'); 
8

ng-bind-html-escape輾轉AngularJs 1.2。

爲了實現我會建議你創建一個過濾器信任的資源相同的效果(你應該包括$sce module):

app.filter('unsafe', function($sce) { 
    return function(val) { 
     return $sce.trustAsHtml(val); 
    }; }); 

用法:

<ELEMENT ng-bind-html="htmlValue | unsafe"></ELEMENT> 

你不應該忘記包括ngSanitize作爲應用程序依賴項:

angular.module('app', ['ngSanitize']) 

乾杯。

+1

您不需要添加ngSantinize。看到這裏:http://jsfiddle.net/B87ca/2/ –

+0

@Flek嗯..這很有趣。我只是因爲在關於'ng-bind-html'的文檔中寫道:[「要使用這個功能,請確保$ sanitize可用,例如,通過在模塊的依賴項中包含ngSanitize(而不是在覈心Angular中)。 「](http://docs.angularjs.org/api/ng.directive:ngBindHtml)。但我猜如果你有一個逃脫的HTML,你不需要。謝謝你的信息! –

+1

是的,文檔在開始時也讓我困惑。我剛剛發現'ngSanitize'並不需要,因爲我忘記了一次,它仍然有效。 –