AngularJS记录计数嵌套的ng-repeat



我是有角度的js初学者,我有两个带有自定义过滤器的嵌套ng-repeat,现在我正在尝试获取显示的订单的记录计数。它工作正常,但在应用产品过滤器后,它无法按预期工作。例如:如果订单在筛选后没有任何要显示的产品,那么我不希望将其与显示我的总记录计数一起添加。

我的网页代码:

<ul ng-repeat="order in Orders | filter:orderName as recordCount">
Order Id: <b>{{order.orderName}}</b>
<li ng-repeat="product in order.products | filter:productName as prodCount">
<b>Name</b> : {{product.name}}, <b>Price</b>: {{product.price}}
</li>
<li ng-if="prodCount < 1">No Product found</li>
<br/>
</ul>

为了更好地理解,我不想要显示为">未找到产品"的订单计数,需要产品的订单计数。 我不知道如何进行才能实现我的期望。需要帮助,提前感谢。

记录计数 =(显示的订单数 - 无产品的订单数(

找到我的小提琴"小提琴"。

您可以观察变化,然后调用每个产品上的筛选器productName来计算总数,如下所示:

首先更改ng-repeat将筛选列表的结果存储到变量中:

<ul ng-repeat="order in ($parent.filteredOrders = (Orders | filter:orderName))">

然后观察更改,循环浏览过滤列表并调用productName以检查它是否适用

$scope.$watch(function() {
$scope.totalCount = 0;
if ($scope.filteredOrders) {
$scope.filteredOrders.forEach(function(order) {
var l = order.products.length;
for (var i = 0; i < l; i++) {
if ($scope.productName(order.products[i])) {
$scope.totalCount++;
break;
}
}
});
}
});

然后显示总计:

{{totalCount}}

编辑:小提琴

最新更新