ng-show

时间:2016-02-05 16:21:28

标签: angularjs angularjs-ng-repeat angular-ngmodel angularjs-ng-show

我尝试在选中上一个选择时显示一个选择。

<div ng-repeat="item in collection">

<div ng-show="$index === 0 || $parent.list[$index].nom">
    <select ng-model="$parent.list[$index].nom" ng-options="..."></select>
</div>

1)<div ng-repeat="item in collection">

我循环收集,我创建了很多选择,集合中有项目。

2)<div ng-show="$index === 0 || $parent.list[$index].nom">

我想用两个条件显示/隐藏选择的父div:

  1. 如果索引等于0(显示第一次选择)
  2. ,则显示div
  3. 如果当前ngModel包含nom
  4. ,则显示div

    3)<select ng-model="$parent.list[$index].nom" ng-options="...">

    我放置了一个动态ngModel,其中每个select都有自己的模型,如:

    exemple of ngModel

    测试示例:我在一个选择中有三个选项,所以我想给成员机会选择选择的每个选项。

    如果会员选择选择1的选项,则选择显示开启,如果他选择第二个选项,则选择第三个选择显示,但不能再显示...

    问题在这里: 指令ngShow中的$ index似乎已知这种情况:

    $index === 0
    

    但不在这里:

    $parent.list[$index].nom
    

2 个答案:

答案 0 :(得分:2)

您必须在ng-repeat中加入track by $index

<div ng-repeat="item in collection track by $index>

答案 1 :(得分:1)

我认为应该是:

<div ng-show="$index === 0 || $parent.list[$index - 1].nom">
    <select ng-model="$parent.list[$index].nom" ng-options="el for el in els"></select>
</div>

注意,您要引用list中的上一个项,因此$index - 1