AngularJS:ng-repeat中的条件换行

时间:2018-08-21 11:09:22

标签: angularjs angularjs-ng-repeat conditional-statements wrapper

如果项目具有特定值,我正在尝试将元素包装在ng-repeat循环中。

例如:

items={
  {name:"AAA",cat:"1"},
  {name:"BBB",cat:"2"},
  {name:"CCC",cat:"1"},
  {name:"DDD",cat:"3"}
}
...
<div ng-repeat="item in items">
  {{item.name}}
</div>

将输出:

<div>AAA</div>
<div>BBB</div>
<div>CCC</div>
<div>DDD</div>

假设我要包装类别= 1的物品。 所需的输出:

<div class="wrapper">
  <div>AAA</div>
</div>
<div>BBB</div>
<div class="wrapper">
  <div>CCC</div>
</div>
<div>DDD</div>

请注意,我的ng-repeat中已经有一个过滤器和一个orderBy,因此不能使用它。 任何建议如何实现这一目标?

非常感谢

编辑:我不能使用一个类,我需要一个包装div。

2 个答案:

答案 0 :(得分:0)

<div ng-repeat="item in items" ng-class="{'wrapper' : item.category == 1}">
  {{item.name}}
</div>

您不需要额外的div

答案 1 :(得分:0)

只需使用ng-class即可完成此操作-

function MainCtrl($scope) {
  $scope.items=[
  {name:"AAA",cat:"1"},
  {name:"BBB",cat:"2"},
  {name:"CCC",cat:"1"},
  {name:"DDD",cat:"3"}
]
 
}
.wrapper {
  background-color : #ccc;  
  width: 10%;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="" ng-controller="MainCtrl as main"> 
  <ul>
     <div ng-repeat="item in items">
  
    <div class="wrapper" ng-if="item.cat ==  1">
      {{item.name}}
    </div>
    <div ng-if="item.cat !=  1">
     {{item.name}}
  </div>  
  </ul>
</div>

编辑

根据您所编辑的问题,这是我所知。它在上面的代码段中实现。

 <div ng-repeat="item in items">

        <div class="wrapper" ng-if="item.cat ==  1">
          {{item.name}}
        </div>
        <div ng-if="item.cat !=  1">
         {{item.name}}
      </div>

注意:如果您不想使用Class,可以使用id