【问题标题】:accordion with ng-repeat and ng-bind-html won't work带有 ng-repeat 和 ng-bind-html 的手风琴不起作用
【发布时间】:2014-01-30 11:53:49
【问题描述】:

我正在尝试以这种方式使用手风琴和 html 内容:

<accordion>
   <accordion-group ng-repeat="item in items">
      <accordion-heading>
          <a class="btn btn-primary btn-block btn-elenco">
         <img postsrc="img/flag/flag_{{item.index}}.jpg">
      </a>
      </accordion-heading>
      <p ng-bind-html="item.content"></p>
   </accordion-group>
</accordion>

var items = [];
for(var i=0;i<10;i++){
var content = "<div>TEST</div>";
items.push({index:i,content:content});
}
$scope.items = items;

var app = angular.module('MyApp',['ngSanitize','ui.bootstrap']);

Accordion 可以工作,但 html 没有呈现到 p 标签中。

可能是什么问题?

编辑

如果我尝试类似:

<div ng-bind-html="to_trusted(item.content)"></div>

并向控制器添加功能:

$scope.to_trusted = function(html_code)
    {
    console.log(html_code);
    return $sce.trustAsHtml(html_code);
    }

没有任何变化,在控制台中我得到很多“未定义”!

【问题讨论】:

    标签: html angularjs angularjs-ng-repeat ng-bind-html


    【解决方案1】:

    这是因为 HTML 内容被 Angular 声明为不安全,因为它是 Strict Contextual Escaping

    另一个 SO 答案已经清楚地解释了如何解决这个问题:HTML injection,即如果您使用的是 Angular 版本 1.2.0 或更高版本。

    我创建了一个Plunkr 来匹配您的情况。

    【讨论】:

    • 你使用什么角度版本?我在 Plunkr 中复制了您的代码,并且可以正常工作。你能用你的代码构建一个 Plunkr 吗?
    • 我正在使用 AngularJS v1.2.9
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多