在Angular ng-repeat - Ionic Grid中,每2个项后创建一行

esa*_*wan 29 grid angularjs angularjs-ng-repeat ionic-framework

我需要通过ng-repeat在我的应用程序中创建如下的strcuture.

<div class="row">
  <div class="col-50">1</div>
  <div class="col-50">2</div>
</div>
<div class="row">
  <div class="col-50">3</div>
  <div class="col-50">4</div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我的代码如下:

<div class="row">
  <label class="item item-radio col col-50" ng-repeat="a in question.answer">
  <input type="radio" name="answers"   class="a-{{ a.correct }}" value="{{ a.correct }}" ng-click='ansValue("{{ a.correct }}")'> 

  <div class="item-content">
     <img src="img/ans/{{ a.option }}" />
  </div>

  <i class="radio-icon ion-checkmark"></i>
  </label>
</div>
Run Code Online (Sandbox Code Playgroud)

但是在上面的代码中,它只是我拥有的单行标记.我不想以某种方式获得行标记包含/包装循环中的每2个项目.实现这一目标的最佳方法是什么?

参考: Ionic Grid Doc

Pat*_*eck 46

我成功地使用了它$even.

<div ng-repeat="number in numbers">

    <div class="row" ng-if="$even">
        <div class="col col-50">{{numbers[$index]}}</div>
        <div class="col col-50">{{numbers[$index + 1]}}</div>
    </div>

</div>
Run Code Online (Sandbox Code Playgroud)

这是一个有效的JSFiddle.

  • 我这样做但是%3在ng-repeat中有很多标记.我没有重复我的代码3次,而是发现我可以像这样执行嵌入式ng-repeat:ng-repeat ="我在[$ index + 0,$ index + 1,$ index + 2]"然后我只需要做一次我的标记并引用list_of_items [i] (2认同)

Ala*_*med 14

来自@Patrick Reck的解决方案非常出色,但它会强制您重复两次代码,

我建议这个改进:

    <div ng-repeat="number in numbers">    
        <div class="row" ng-if="$even">
            <div class="col col-50" 
                 ng-repeat="num in [numbers[$index],numbers[$index + 1]]">
                {{num}}
            </div>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以将代码编写一次,就好像它是正常的ng-repeat一样

  • @joshwhatk简单的解决方案是添加ng - 如果这样:`<div class ="col col-50"ng-repeat ="num in [numbers [$ index],numbers [$ index + 1]]"ng-if = "NUM">` (2认同)

Zao*_*Zao 6

您可以添加flex-wrap:wrap到类行

http://jsfiddle.net/0momap0n/99/

<div ng-controller="MyCtrl">
    <div class="row" style="flex-wrap: wrap">
    <div class="col col-50" ng-repeat="number in numbers">{{number}}</div>
</div>  

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.numbers = [1, 2, 3, 4, 5, 6];
}
Run Code Online (Sandbox Code Playgroud)

  • flex-wrao:wrap不能与我的4.1.1 android设备一起使用.你可以帮我吗? (2认同)