我正在为酒店POS系统开发项目。我正在接受客户的订单。系统中存在两种类型的订单:
取消订单。
送货上门订单。
在订单表中,我存储了所有订单。 我在 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>
答案 0 :(得分:1)
最自然的方法是将allCurrentTakeAwayOrder
和allcurrentHMOrder
的单个集合构建为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>
希望这有帮助。