使用 $index 设置动态 ID
Set dynamic id with $index
我有这个代码:
我的列表,应该像导航一样使用主导航点和子导航点:
list = [
{
Id: 1,
Name: 'Main 1',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
},
{
Id: 2,
Name: 'Main 2',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
}
];
这是我的HTML。我使用 ng-repeat 循环主要点和它的子点,并尝试使用 $index
.:
动态设置一些 id
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index}}">{{item.Name}}</div>
<div id="main_{{$parent.$index}}_sub_{{$index}}" ng-repeat="sub in item.Items">
<div>— {{sub.Name}}</div>
</div>
</div>
我的结果是这样的,效果很好:
Main 1
- Sub 1
- Sub 2
Main 2
- Sub 1
- Sub 2
我现在的目标是分配一个 id
到我的 div
与主和我的 div
与潜艇。我将带有 $index
的当前索引添加到主 div
中的 id,然后我尝试将子 div 的 id 与主(它的父级)的索引结合起来和当前索引。为了获取父级的索引,我使用了 $parent.$index
。我的预期结果是遵循 id 的:
Main 1 -> id = main_0
- Sub 1 -> id = main_0_sub_0
- Sub 2 -> id = main_0_sub_1
Main 2 -> id = main_1
- Sub 1 -> id = main_1_sub_0
- Sub 2 -> id = main_1_sub_1
但这目前不起作用。主 div 的 id 是正确的,但 sub 的 id 不正确。我认为 $parent.$index 它应该可以工作,但是 main 的当前索引有问题。我不知道如何解决这个问题。我希望有人能帮助我。
我注意到您想要的是 $index-1。试试这个:
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index-1}}">{{item.Name}}</div>
<div id="main_{{$parent.$index-1}}_sub_{{$index-1}}" ng-repeat="sub in item.Items>
<div>— {{sub.Name}}</div>
</div>
</div>
试试下面的代码片段,它在这里工作正常!
var app = angular.module('app',[]);
app.controller('Ctrl',function($scope){
$scope.list = [
{
Id: 1,
Name: 'Main 1',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
},
{
Id: 2,
Name: 'Main 2',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
}
];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl">
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index}}">{{item.Name}} - main_{{$index}}</div>
<div id="main_{{$parent.$index}}_sub_{{$index}}" ng-repeat="sub in item.Items">
<div>— {{sub.Name}} - main_{{$parent.$index}}_sub_{{$index}}</div>
</div>
</div>
</div>
我有这个代码:
我的列表,应该像导航一样使用主导航点和子导航点:
list = [
{
Id: 1,
Name: 'Main 1',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
},
{
Id: 2,
Name: 'Main 2',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
}
];
这是我的HTML。我使用 ng-repeat 循环主要点和它的子点,并尝试使用 $index
.:
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index}}">{{item.Name}}</div>
<div id="main_{{$parent.$index}}_sub_{{$index}}" ng-repeat="sub in item.Items">
<div>— {{sub.Name}}</div>
</div>
</div>
我的结果是这样的,效果很好:
Main 1
- Sub 1
- Sub 2
Main 2
- Sub 1
- Sub 2
我现在的目标是分配一个 id
到我的 div
与主和我的 div
与潜艇。我将带有 $index
的当前索引添加到主 div
中的 id,然后我尝试将子 div 的 id 与主(它的父级)的索引结合起来和当前索引。为了获取父级的索引,我使用了 $parent.$index
。我的预期结果是遵循 id 的:
Main 1 -> id = main_0
- Sub 1 -> id = main_0_sub_0
- Sub 2 -> id = main_0_sub_1
Main 2 -> id = main_1
- Sub 1 -> id = main_1_sub_0
- Sub 2 -> id = main_1_sub_1
但这目前不起作用。主 div 的 id 是正确的,但 sub 的 id 不正确。我认为 $parent.$index 它应该可以工作,但是 main 的当前索引有问题。我不知道如何解决这个问题。我希望有人能帮助我。
我注意到您想要的是 $index-1。试试这个:
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index-1}}">{{item.Name}}</div>
<div id="main_{{$parent.$index-1}}_sub_{{$index-1}}" ng-repeat="sub in item.Items>
<div>— {{sub.Name}}</div>
</div>
</div>
试试下面的代码片段,它在这里工作正常!
var app = angular.module('app',[]);
app.controller('Ctrl',function($scope){
$scope.list = [
{
Id: 1,
Name: 'Main 1',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
},
{
Id: 2,
Name: 'Main 2',
Items: [
{
Id: 1,
Name: 'Sub 1'
},
{
Id: 2,
Name: 'Sub 2'
}
]
}
];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl">
<div class="wrapper" ng-repeat="item in list">
<div id="main_{{$index}}">{{item.Name}} - main_{{$index}}</div>
<div id="main_{{$parent.$index}}_sub_{{$index}}" ng-repeat="sub in item.Items">
<div>— {{sub.Name}} - main_{{$parent.$index}}_sub_{{$index}}</div>
</div>
</div>
</div>