2015-06-04 32 views
1

我們正在使用AngularJS嘗試以HTML格式顯示用戶輸入的內容。大多數時候用戶輸入有效/安全的數據,我們使用ng-bind-html正確顯示。偶爾他們會輸入無效的HTML,我仍然希望顯示爲原始文本。如何捕獲ngSantitize錯誤並將html顯示爲轉義文本

如果我用NG-結合HTML的嘗試顯示無效HTML我得到這個錯誤:

[$sanitize:badparse] The sanitizer was unable to parse the following block of html: 

我不想使用trustAsHtml,因爲我不相信我們的消毒,並要確保我們不會在頁面上顯示不安全的html。

+0

如果要顯示輸入的原始文本,只需使用'ng-bind'而不是'ng-bind-html'。 – Claies

+0

ng-bind很好,但我想顯示呈現的html,如果它是有效的。 –

回答

0

我結束了創建一個指令去做這個。這是如何使用它。

<div ng-bind-html-if-safe="SomeHtml"></div> 

該指令的來源可以找到here

1

根據ngBindHtmlDirective,你可以做這樣的:

HTML:

<div ng-if="isSafeHtml()"> 
    <div ng-bind-html="invalidHtml"></div> 
</div> 
<div ng-if="!isSafeHtml()"> 
    {{invalidHtml}} 
</div> 

JS:

$scope.isSafeHtml = function() { 
    return !!$sce.getTrustedHtml($scope.invalidHtml); 
} 

修改plunkr:http://plnkr.co/edit/Besix3PfQ1TjUEEagfca?p=preview

+0

有趣的想法。這可能足以讓我們超越這一點。謝謝! –

相關問題