AngularJS - 如何获取两个索引
AngularJS中如何获取两个索引?
在上面的代码中,我们可以看到有两个嵌套的ng-repeat循环。外层循环是遍历stages数组,内层循环是遍历每个stage对象中的steps数组。在内层循环中,我们想要获取两个索引:当前step的索引和其父元素stage的索引。
为了解决这个问题,我们可以使用$parent.$index
来获取父元素的索引。在HTML代码中,我们可以看到在标签中使用了{{$index}}
来获取当前step的索引,而使用了{{$parent.$index}}
来获取父元素stage的索引。
以下是完整的HTML和JS代码:
HTML:
<div ng-app="app" ng-controller="ctrl"> <div ng-repeat="stage in stages"> <div ng-repeat="step in stage.steps"> <span>Index: {{$index}}. ParentIndex:{{$parent.$index}}</span> </div> </div> </div>
JS:
angular.module('app', []). controller('ctrl', function($scope) { $scope.stages = [{ steps: ['1', '2', '3'] }, { steps: ['4', '5'] }, {steps:['6','7','8']}]; })
你可以在这里查看这个例子的JSFIDDLE。
通过使用{{$index}}
和{{$parent.$index}}
,我们可以轻松地获取到内层循环和外层循环的索引,从而满足我们的需求。
AngularJS中获取两个索引的问题是因为需要获取父级索引和子级索引,以便在点击按钮时进行相应的处理。解决方法是通过在ng-repeat指令中使用ng-init来定义一个变量,用于保存父级索引。然后在按钮的ng-click事件中调用一个函数,传递子级索引和父级索引作为参数。在函数中,可以使用$scope.clickedStageAndStep来获取这两个索引,并进行相应的操作。
具体代码如下:
$scope.clickedStageAndStep = function(stageIndex, stepIndex) { console.log("Step Index: " + stepIndex + " And StageIndex: " + stageIndex); };
以上代码中,首先通过ng-init指令将父级索引保存在stageNumber变量中。然后在ng-click事件中调用clickedStageAndStep函数,传递子级索引和父级索引作为参数。在函数中,使用console.log方法打印出这两个索引的值。
通过以上代码,就可以实现在点击按钮时获取父级索引和子级索引的功能。
AngularJS - 如何获取两个索引
在AngularJS中,每个ng-repeat都有自己的作用域,$index表示ng-repeat的最内层作用域。
问题的出现原因:
在给按钮绑定点击事件时,需要获取父级和子级的索引,即$parent.$index和$index。然而,由于ng-repeat有自己的作用域,直接使用$index会导致获取到的是内层ng-repeat的索引,而不是外层ng-repeat的索引。
解决方法:
使用$parent.$index来获取外层ng-repeat的索引,将其传递给clickedStageAndStep函数,同时使用$index来获取内层ng-repeat的索引,也传递给函数。这样就能正确地获取到两个索引值。
代码示例:
$scope.clickedStageAndStep = function(parent, child) { console.log("Step Index: " + child); };注意事项:
上述代码中