Angularjs 如果导致$parent.$index设置为$index,则为ng
我有一个ng中继器,其中包含一个嵌套的ng中继器。在嵌套中继器中,我试图跟踪父项$index值,这很好。但是,当我在引用$parent.$index的同一元素中引入ng if时,parents索引被设置为子索引。有什么想法吗?代码正在运行。例如,我单击父级0的索引1,并将索引1父级1作为索引 JavaScriptAngularjs 如果导致$parent.$index设置为$index,则为ng,angularjs,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我有一个ng中继器,其中包含一个嵌套的ng中继器。在嵌套中继器中,我试图跟踪父项$index值,这很好。但是,当我在引用$parent.$index的同一元素中引入ng if时,parents索引被设置为子索引。有什么想法吗?代码正在运行。例如,我单击父级0的索引1,并将索引1父级1作为索引 JavaScript var myApp = angular.module('myApp', []); myApp.controller('ctrl', function($scope) { $sc
var myApp = angular.module('myApp', []);
myApp.controller('ctrl', function($scope) {
$scope.arr = [["a","b","c"],["d","f","e"],["f","h","i"]];
$scope.logIndex = function(index, parent) {
console.log("index: " + index + ", parent: " + parent);
};
});
HTML
<ul>
<li ng-repeat="i in arr">
<ul>
<li ng-repeat="j in i">
<span ng-click="logIndex($index, $parent.$index)" ng-if="$index > 0">{{ j }}</span>
</li>
</ul>
</li>
</ul>
-
-
{{j}
这是因为ng if
在元素上创建了子作用域,因此$parent
实际上是其立即ng repeat的子作用域,而不是父作用域,并且$index也是从其直接父级继承的相同$index(即第二个ng repeat的子作用域)。您可以使用别名ng repeat的特殊属性,并使用该属性而不是使用$parent
<li ng-repeat="i in arr" ng-init="parentIndex=$index">
<ul>
<li ng-repeat="j in i">
<span ng-click="logIndex($index, parentIndex)" ng-if="$index > 0">{{ j }} </span>
</li>
</ul>
</li>
-
{{j}