在我的应用程序中,我有 2 个对象数组。layout
数组用于创建 twitter bootstrap 布局。该数组如下所示:
$scope.layout = [
{c:[{size:12}]},
{c:[{size:2},{size:3},{size:4},{size:3}]},
{c:[{size:3},{size:5},{size:4}]}
];
你可以在这个 jsbin 中看到这个数组是如何工作的另一个数组是 items 数组,该数组如下所示:
$scope.items =[
{row:1,column:0,names:['Jack','Daniel']},
{row:3,column:3,names:['Eli','Bill']},
{row:2,column:1,names:['Fred','David']}
];
这是我使用的中继器:
<div ng-repeat="(ri,r) in layout" class="row">
<div ng-repeat="(ci,c) in r.c" class="col-md-{{c.size}} col-sm-{{c.size}} col-xs-{{c.size}} col-lg-{{c.size}} bi"> Row{{ri}}-Column{{ci}}
//Maybe other repeater come here
</div>
</div>
现在我想当我想在第1行第0列
中显示Jack,Daniel
时,这个1和0是第一个和第二个中继器的中继器中的r和c。因此,当中继器创建 row 2 column 1
时,也会在 $scop.item 上重复并查找相关名称。但我不知道如何在 $scope.item 中查找项目。这是我的 jsbin
最佳答案
你可以这样做:
<div ng-repeat="(ri,r) in layout" class="row">
<div ng-repeat="(ci,c) in r.c" class="col-md-{{c.size}} col-sm-{{c.size}} col-xs-{{c.size}} col-lg-{{c.size}} bi">
{{getNames(ri, ci)}}
</div>
</div>
在 Controller 中定义 getNames
的位置:
$scope.getNames = function(r, c) {
var items = $scope.items;
for (var i = 0; i < items.length; i++) {
if (items[i].row == r && items[i].column == c) {
return items[i].names;
}
}
return '';
};
演示:http://jsbin.com/sumuwigo/1/edit
关于javascript - 根据Angular中的ng-repeat索引查找数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23798533/