基于Angular中的ng-repeat索引查找数组项

时间:2014-05-22 05:34:18

标签: javascript arrays angularjs angularjs-ng-repeat

在我的应用程序中,我有2个对象数组。layout数组用于创建twitter引导程序布局。这个数组如下所示:

 $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>

现在我希望在Jack , Daniel中显示row 1 column 0,并且此1和0在第一和第二个转发器的转发器中是r和c。所以当转发器创建row 2 column 1时在$ scop.item上重复并找到相关的名称。但我不知道如何在$ scope.item中查找项目。这是我的jsbin

1 个答案:

答案 0 :(得分:1)

您可以这样做:

<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>

在控制器中定义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