我有一个Bootstrap-UI手风琴组,使用ng-repeat生成单独的手风琴菜单。每个手风琴下的内容也使用嵌套的ng-repeat生成。
<accordion close-others="false">
<span data-ng-repeat="category in categories">
<accordion-group is-open="filterText.length > 0">
<accordion-heading>{{category}}: {{reportList.length}} Items </accordion-heading>
<div>
<ul>
<li data-ng-repeat="report in reportList = (getReports($parent.$index) | filter: filterText)">{{report}}</li>
</ul>
</div>
</accordion-group>
</span>
</accordion>
第二次重复重复生成的内容需要是可搜索的。执行搜索时,应打开包含匹配值的手风琴并显示匹配值。我知道外部ng-repeat看到过滤后的数组及其长度,因为我可以在视图中显示长度值(即过滤器执行时{{reportList.length}}
更新)。
当我尝试将reportList.length
值放在is-open
的{{1}}属性中时出现问题。使用<accordion-group>
似乎将文字传递给指令。无奈之下,我尝试使用is-open="reportList.length"
,但这会引发预期的语法错误。
这是一个plunker,它显示了我所做的工作,并注释出了一些显示我认为它应该工作的方式(第22行和第23行)。任何建议都非常受欢迎。
答案 0 :(得分:1)
您的绑定在ng-repeat内打开,为每个项目(类别)创建子范围。您需要绑定到$ parent.filterText.length,因为filterText不是类别属性。
答案 1 :(得分:0)
绑定is-open
的内容,Angular需要能够分配给它,而不仅仅是评估它。它可以评估像&#34; foo == 5&#34;但它不能指定。
我所做的是创建一个变量并绑定到该变量,然后手风琴可以改变它,我可以改变它,每个人都快乐。
$scope.accordionSettings = {
IsOpen: {
Section1: true,
Section2: false
}};
在标记中:
<div uib-accordion-group is-open="accordionSettings.IsOpen.Section1">
... more markup ...
<div uib-accordion-group is-open="accordionSettings.IsOpen.Section2">