Angular JS在标记内显示HTML

Nir*_*han 32 html angularjs ng-bind-html

我试图使用ng-bind-html-unsafe属性在模板中插入HTML .但由于某种原因,它不起作用.

我的代码:

<tr class="white two-button" ng-repeat="(key,value) in recommendations | ojoScoreFilter:ojoScore | relevancyScoreFilter:relevancyScore | orderBy:predicate:reverse">
<td>
<div ng-bind-html-unsafe="value.button"></div>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我无法看到HTML.如果我ng-bind-html-unsafe="value.button"改为ng-bind-html-unsafe="{{value.button}}"然后它显示HTML但在属性中,如下所示:

<div ng-bind-html-unsafe="&lt;a class=&quot;action_hrefs full-width bgcolor10 purple-hover flat-button flat-white-button btn&quot; data-value=&quot;947&quot; href=&quot;#&quot;&gt;&lt;i class=&quot;fa fa-lock&quot;&gt;&lt;/i&gt;&nbsp;Unlock&lt;/a&gt;"></div>
Run Code Online (Sandbox Code Playgroud)

Nir*_*han 121

好的,我找到了解决方案:

JS:

$scope.renderHtml = function(html_code)
{
    return $sce.trustAsHtml(html_code);
};
Run Code Online (Sandbox Code Playgroud)

HTML:

<p ng-bind-html="renderHtml(value.button)"></p>
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一对我有用的解决方案.务必将$ sce注入控制器. (14认同)
  • 为了使其工作,请确保将$ sce注入控制器中定义的函数,如下所示:`myApp.controller('myCtrl',function($ scope,$ sce){` (13认同)
  • 哇,这是唯一有效的!我已经尝试了一切,谢谢:) (6认同)
  • 这是唯一对我有用的解决方案.在其他SO帖子中找到了接受的答案:http://stackoverflow.com/questions/9381926/insert-html-into-view-using-angularjs不起作用. (2认同)

Rub*_*rop 13

像这样做一个过滤器

.filter('trusted',
   function($sce) {
     return function(ss) {
       return $sce.trustAsHtml(ss)
     };
   }
)
Run Code Online (Sandbox Code Playgroud)

并将其作为过滤器应用于ng-bind-html之类的

<div ng-bind-html="code | trusted">
Run Code Online (Sandbox Code Playgroud)