Angularjs UI在ngRepeat中崩溃

时间:2014-02-18 10:46:36

标签: javascript angularjs twitter-bootstrap collapse

我正在尝试在ngRepeat中嵌入一些可折叠面板。 这就是我所拥有的:

<div class="panel panel-default" ng-repeat="element in elements">
 <div class="panel-heading">
  {{element.name}}
  <button value="Collapse" ng-click="element.isCollapsed != element.isCollapsed"></button>
 </div>
 <div class="panel-body" collapse="element.isCollapsed">
  Content
 </div>
</div>

现在,当我点击按钮时,折叠不起作用。 从文档中我了解到,转发器为每个element创建了一个范围。 面板体的属性collapse应该具有相同的范围,对吧? 似乎scope.$watch指令中的collapse无法正常工作。 或者也许我做错了什么?

由于

2 个答案:

答案 0 :(得分:5)

请检查更新的小提琴:http://jsfiddle.net/nZ9Nx/9/

我已经创建了应用程序并在其中注入了ui-bootstrap以使崩溃正常工作。

angular.module('test', ['ui.bootstrap']);

答案 1 :(得分:3)

问题是

<div class="panel-heading" toggle target="collapseOne">

在示例中它是硬编码的。替换为......

<div class="panel-heading" toggle target="collapse{{ $index + 1 }}">

同时更新此标记

<div id="collapse{{ $index + 1 }}" toggleable active-class="in" exclusion-group="accordion1" default="active" class="panel-collapse collapse">

这是一个完整的例子

<div ng-repeat="item in awesomeThings">
    <div class="panel panel-default">
        <div class="panel-heading" toggle target="collapse{{ $index + 1 }}">
            <h4 class="panel-title">
                {{ item }}
            </h4>
        </div>
        <div id="collapse{{ $index + 1 }}" toggleable active-class="in" exclusion-group="accordion1" default="active" class="panel-collapse collapse">
            <div class="panel-body">
                <!-- ... -->
            </div>
        </div>
    </div>
</div>