我有以下名为“tabs”的javascript对象:
http://i.imgur.com/hKTj9o9.png
我在页面上的所需输出:
section0.title
children0.title
children1.title
最终成为
Analytical Balances
ML
XS
我已经将选项卡名称(tab0.title,tab1.title)重复为选项卡式导航,我想知道如何重复部分名称(例如section0.title)和子部分名称(例如children0.title)
我认为这可以实现这一结果:
<div ng-repeat="tab in tabs" track by $index>
<a>{{ tab[$index].title }}</a>
<ul ng-repeat="section in tabs" track by $index>
<li>{{ section[$index].title }}</li>
<ul ng-repeat="child in children" track by $index>
<li>{{ child[$index].title }}</li>
</ul>
</ul>
</div>
我知道这也会重复标签标题,但我认为如果我加入顶级标题会更容易理解。然后我可以修改它,每页只显示一个标签,基于索引。
使用这样的$ index来引用javascript变量可能吗?我现在意识到这可能不是一件事。
非常感谢你的时间。
编辑:非常感谢您的投入,您几乎立即解决了我的问题。我现在看到为什么我被赶上使用$ index并且可以使用更多的帮助。我目前在显示我的标签名称时有这段代码:
<nav>
<ul>
<li ng-class="getClass($index)" ng-repeat="tab in tabArray">
<a ng-click="toggleSelect($index)" ng-class="getLinkClass($index)">{{tab}}</a>
</li>
</ul>
</nav>
这不是我使用的那个“tabs”对象,而是“tabArray”,它只是一个按顺序具有顶级选项卡名称的数组。 toggleSelect使用$ index允许我根据选择的选项卡更改显示的内容,并选择哪个选项卡获取活动类。
现在回到我发布这个问题时我认为需要$ index的原因。我的“tabs”对象中的选项卡被命名为“tab0”,“tab1”等。当$ index为0时,我可以使用$ index仅重复tab0中的元素吗?这就是为什么我认为我可以使用像
这样的参考 {{tabs["tab"+$index].title}}
或者其他什么。或者甚至将我的标签命名为“0”,“1”等,并像
一样引用 {{tabs[$index].title}}
在我的HTML中。
非常感谢,如果我不清楚,请告诉我。
另外参考我的简单toggleSelect方法:
$scope.toggleSelect = function(ind){
$scope.selectedIndex = ind;
}
答案 0 :(得分:1)
您需要根据您的迭代项进行修改,因为每个项都与您已经迭代过的项相关。
总而言之,你拥有的每个循环只有3个:
<div ng-repeat="tab in tabs">
<a>{{ tab.title }}</a>
<ul ng-repeat="section in tab.sections">
<li>{{ section.title }}</li>
<ul ng-repeat="child in section.children">
<li>{{ child.title }}</li>
</ul>
</ul>
</div>
修改:要回答您的修改,您可以将上述HTML中的第一行更改为:
<div ng-repeat="tab in tabs" ng-if="tabIsActive($index)">
在你的控制器中有:
$scope.tabIsActive = function (index) {
//according to your edit, $scope.selectedIndex should hold the active tab index
return $scope.selectedIndex == index;
}
答案 1 :(得分:0)
你真的不需要使用[$ index]字段,你应该能够做到这一点:
<强> tab.title 强>
并更改标签中的&#39;
部分到tab.sections &#39;
中的&#39; 部分然后再做
<强> section.title 强>
ng-repeat已经从tabs数组中提供了一个元素,该变量名为&#39; tab&#39;。同样适用于部分。