首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ng-重复同时获取两个连续的数组对象?

如何使用ng-重复同时获取两个连续的数组对象?
EN

Stack Overflow用户
提问于 2015-12-23 18:38:29
回答 4查看 233关注 0票数 0

假设控制器中有一个数组,如下所示:

代码语言:javascript
复制
$scope.elements = [
  {
    title: title-1,
    desc: description-1
  },
  {
    title: title-2,
    desc: description-2
  },
  {
    title: title-3,
    desc: description-3
  },
  {
    title: title-4,
    desc: description-4
  }
]

我希望循环遍历数组,以便将元素放置如下:

代码语言:javascript
复制
<div class="row">
  <div class="col-sm-6">
    {{ elements[0].title }}
    {{ elements[0].desc }}
  </div>
  <div class="col-sm-6">
    {{ elements[1].title }}
    {{ elements[1].desc }}
  </div>
</div>
<div class="row">
  <div class="col-sm-6">
    {{ elements[2].title }}
    {{ elements[2].desc }}
  </div>
  <div class="col-sm-6">
    {{ elements[3].title }}
    {{ elements[3].desc }}
  </div>
</div>

...and等。

如果我们可以通过ng-repeat同时获取两个连续的元素并将其传递给指令,就可以实现这一点。这能办到吗?如果是这样的话,如何在指令中处理获取的数组对象?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-23 18:46:21

我会使用$index属性来完成这个任务。使用ng-if隐藏的效率有点低,如果这是一个巨大的重复,您可能需要一个更优雅的解决方案。

代码语言:javascript
复制
<div class="row" ng-repeat="element in elements" ng-if="$index <=  elements.length /2">
  <div class="col-sm-6">
    {{ elements[$index*2].title }}
    {{ elements[$index*2].desc }}
  </div>
  <div class="col-sm-6" ng-if="elements[$index*2 + 1]"> //ng-if for if you want to remove last element if odd array.
    {{ elements[$index*2 + 1].title }}
    {{ elements[$index*2 + 1].desc }}
  </div>
</div>
票数 1
EN

Stack Overflow用户

发布于 2015-12-23 18:44:28

这看起来就像创建另一个要迭代的数组一样简单

代码语言:javascript
复制
$scope.TemplateArray = [
[0,1],
[2,3],
etc...
]

然后将其用于TemplateArray中的ng重复数组。

代码语言:javascript
复制
<div class="row">
  <div class="col-sm-6">
    {{ elements[array[0]].title }}
    {{ elements[array[0]].desc }}
  </div>
  <div class="col-sm-6">
    {{ elements[array[1]].title }}
    {{ elements[array[1]].desc }}
  </div>
</div>
票数 0
EN

Stack Overflow用户

发布于 2015-12-23 18:53:17

最好的方法可能是将数组预处理成多列的组,然后对数组进行ng-重复。所以,将你的元素预处理成如下所示:

代码语言:javascript
复制
$scope.processedElements = [
   [{title:'1',desc:'1d'},{title:'2',desc:'2d'},{title:'3',desc:'3d'},{title:'4',desc:'4d'}],
   [{title:'5',desc:'5d},.......      ]

];

然后

代码语言:javascript
复制
 <div ng-repeat="item in processedElements">
      {{item[0].title}} {{item[1].title}}       // etc. etc

 </div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34441755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档