简体   繁体   English

如何使用angular和ng-repeat在javascript中创建3d dom?

[英]how to create 3d dom in javascript using angular and ng-repeat?

What I want to achieve is to create a 3 level in depth with angular and ng-repeat or ng-option but I am losing the track of $index because the second and third level are pointing to the same $index from level 1 not their own level. 我想要实现的是用角度和ng-repeat或ng-option创建3级深度,但是我丢失了$ index的轨迹,因为第二级和第三级指向的是第一级的同一$ index而不是它们的自己的水平。 Accessing to the right index is important. 访问正确的索引很重要。

var A = [[[1],[2]],[[3],[4]],[[5],[6]]]

<ul> 
    <li ng-repeat="a in A track by indexA" ng-click="myFnA(indexA)">
        <ul> 
            <li ng-repeat="b in B track by indexB" ng-click="myFnB(indexB)"> 
                <ul> 
                    <li ng-repeat="c in C track by indexC" ng-click="myFnC(indexC)">

                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

Use the ng-init directive to save indexes: 使用ng-init指令保存索引:

Also be sure that the nested ng-repeat uses the previous ng-repeat variable: 另外,请确保嵌套的ng-repeat使用先前的ng-repeat变量:

ng-repeat="itemA in A"     ng-init="indexA=$index"
ng-repeat="itemB in itemA" ng-init="indexB=$index"
ng-repeat="c     in itemB"

The Demo 演示

 angular.module("myApp",[]); angular.module("myApp").controller("myVm", function($scope) { $scope.A = [[[1],[2]],[[3],[4]],[[5],[6]]]; }); 
 <script src="//unpkg.com/angular/angular.js"></script> <div ng-app="myApp" ng-controller="myVm"> <h1>Nested ng-repeat Demo</h1> <ul> <li ng-repeat="itemA in A" ng-init="indexA=$index"> {{indexA}}:{{itemA}} <ul> <li ng-repeat="itemB in itemA" ng-init="indexB=$index"> {{indexB}}:{{itemB}} <ul> <li ng-repeat="c in itemB track by $index"> A[{{indexA}}][{{indexB}}][{{$index}}]={{c}} </li> </ul> </li> </ul> </li> </ul> </div> 

you can assign index to variable using ng-init 您可以使用ng-init将索引分配给变量

<ul> 
    <li ng-repeat="a in A track by $index" ng-init="indexA = $index"> <!--indexA is the index of a-->
        <ul> 
            <li ng-repeat="b in B track by $index"  ng-init="indexB = $index"><!--indexB is the index of b-->
                <ul> 
                    <li ng-repeat="c in C track by $index"  ng-init="indexC = $index"> <!--indexC is the index of c-->
                       {{indexA}}
                       {{indexB}}
                       {{indexC}}
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM