Angular js - 如何根据条件

时间:2016-10-12 13:55:56

标签: angularjs angularjs-ng-repeat

我正在为酒店POS系统开发项目。我正在接受客户的订单。系统中存在两种类型的订单:

  1. 取消订单。

  2. 送货上门订单。

  3. 订单表中,我存储了所有订单。 我在 allCurrentTakeAwayOrder 中获取外卖订单 和 allcurrentHMOrder 中的送货单 我想在不同的部分显示外卖订单和送货上门订单。

    如果标题 Take Away ,我想放置条件,然后ng-repeat应该从 allCurrentTakeAwayOrder 获取值送货上门然后从< strong> allcurrentHMOrder as:

    <tr ng-repeat='orders in allCurrentTakeAwayOrder if heading=Take Away or
       orders in allcurrentHMOrder if heading=Home Delivery' >
    </tr>
    

6 个答案:

答案 0 :(得分:1)

最自然的方法是将allCurrentTakeAwayOrderallcurrentHMOrder的单个集合构建为orders,并确保其项目包含属性类型(TakeAway /交货)。在这种情况下,您将能够像这样更改您的代码:

ng-repeat="order in orders | filter:{type:heading}" 

答案 1 :(得分:1)

我在ng-repeat中使用ng-if

<tr ng-repeat='orders in allCurrentTakeAwayOrder | filter:{type:heading}' >
    <label ng-if="orders.heading == 'Take Away' || orders.heading == 'Home Delivery'">

    </label>
 </tr>

我认为它可能对你有所帮助。

答案 2 :(得分:1)

如果您真的想在ng-repeat中使用条件,我建议使用三元运算符,如下所示:

<input type="checkbox" name="condition" ng-model="condition" />
<ul ng-init="numbers=[1,2,3];letters=['a','b','c'];">
  <li ng-repeat="i in (condition ? numbers : letters)">
    {{i}}
  </li>
</ul>

答案 3 :(得分:0)

$scope变量定义为data$scope.data

然后在HTML中:

<tr ng-repeat='orders in data' >
    ...
</tr>

JS - 控制器:

$scope.data = [];
if($scope.heading == 'Take Away') {
    $scope.data = angular.copy(allCurrentTakeAwayOrder);
} else if($scope.heading == 'Home Delivery') {
    $scope.data = angular.copy(allcurrentHMOrder);
} else {
    // Any default code or change any one condition to incorporate in this block and remove else if
}

答案 4 :(得分:0)

您可能需要使用比较器。

$scope.values = ["Take Away", "Home Delivery"]; 

$scope.comparator = function(expected, actual){  
  return actual.indexOf(expected) > -1;
}

<tr ng-repeat='orders in allCurrentTakeAwayOrder | filter:{heading:values}:comparator' >

</tr>

答案 5 :(得分:0)

请按照此link获取解决问题的方法。

但是,您的案例摘要如下:

<tr ng-repeat="orders in {true: allCurrentTakeAwayOrder, false:allcurrentHMOrder}[heading==='Take Away']">

  //Output something

</tr>

希望这有帮助。