【问题标题】:AngularJS - how to use ng-repeat in different containersAngularJS - 如何在不同的容器中使用 ng-repeat
【发布时间】:2013-04-05 14:23:53
【问题描述】:

我正在尝试使用 ng-repeat 来显示数字数组。如果我希望它在不同的容器中,例如在不同的ul 中,如何实现这一点?另外,每个ul最多只能包含2个li

$scope.numbers = [1,2,3,4,5]

<div ng-controller="myController">
    <ul>
        <li>1</li>
        <li>2</li>
    </ul>
    <ul>
        <li>3</li>
        <li>4</li>
    </ul>
    <ul>
        <li>5</li>
    </ul>
</div>

【问题讨论】:

  • 我会将控制器中的数组转换为 [[1,2], [3,4], [5]],然后使用嵌套的 ng-repeat 进行迭代:&lt;ul ng-repeat="pair in array"&gt;&lt;li ng-repeat="number in pair"&gt;{{number}}&lt;/li&gt;&lt;/ul&gt;

标签: javascript arrays multidimensional-array angularjs


【解决方案1】:

您应该将该numbers 数组拆分为多个块,然后使用嵌套的ng-repeat

JavaScript:

var i, l = $scope.numbers.length;

$scope.chunks = [];

for ( i = 0; i < l; i += 2) {
    $scope.chunks.push( $scope.numbers.slice(i, i + 2) );
}

HTML:

<div ng-controller="myController">
    <ul ng-repeat="chunk in chunks">
        <li ng-repeat="number in chunk">{{ number }}</li>
    </ul>
</div>

See it here in action.

【讨论】:

  • 当您使用动态大小的块时会怎样?我有这个问题,因为我正在使用视口来决定有多少列......
  • @mkornblum - 然后你只需创建一个大的ul,并根据媒体查询给lis 一个百分比宽度。
  • 这就是我最终所做的,但我最初试图将左侧列填充到屏幕高度,然后再移动到右侧的下一个列。我想不出办法……
猜你喜欢
  • 2012-08-07
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 2017-12-22
  • 2012-10-10
  • 1970-01-01
  • 2016-06-30
相关资源
最近更新 更多