2015-05-07 35 views
0

我們使用彈性搜索熒光筆,並從熒光筆中獲取以下代碼。AngularJs - html渲染

<span style='font-weight:bold;color:red;'>Baskar</span> Test 

在html中顯示結果如下。

     <tr 
         ng-repeat="result in searchModelResult">       
         <td><p ng-bind-html="result.name"></p></td>      
        </tr> 

我已經包含sanitize.js並且在angular模塊中有ngSanitize。仍然我沒有看到像紅色字體和粗體字體的HTML效果。

我在這裏失蹤了嗎?

感謝, Baskar.S

回答

1

你需要做兩件事情,首先刪除

{{result.name}} 

丹尼爾說...那麼你需要說的角度在HTML在你的控制器信任:

myApp.controller('MyCtrl', function ($scope, $sce) { 
    $scope.result.name = $sce.trustAsHtml('<span style="font-weight:bold; color:red;">Baskar</span> Test'); 
}); 

你可以看到$ sce的完整文檔here

如果您需要在ng-repeat內迭代,您可以創建一個過濾器:

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

,然後用它的觀點:

<tr ng-repeat="result in searchModelResult">       
    <td><p ng-bind-html="result.name | unsafe"></p></td>      
</tr> 
+0

嗨, 我得到一個列表,並在html中使用ng-repeat迭代。我是否應該在控制器中迭代列表併爲每個元素添加$ sce.trustAsHtml? – user1578872

+0

不一定,你可以創建一個過濾器,如Chris在這個鏈接中所說:http://stackoverflow.com/questions/18340872/how-do-you-use-sce-trustashtmlstring-to-replicate-ng-bind-html-不安全在Angu看到第二個答案(一個女巫有306點)。告訴我你是否需要一個例子。 –

+0

@ user1578872我舉了一個答案的例子。 –

0

您需要刪除第二個綁定表達式:

{{result.name}} 

看起來是重寫從ng-bind-html結合,默認綁定將HTML轉義字符串。

+0

我嘗試這樣做。現在,我沒有看到html標籤。但我沒有看到HTML效果。文字顏色仍爲正常顏色,不是紅色,而不是粗體。 – user1578872