2017-08-17 93 views
0

我的角度JS初學者,我有兩個嵌套NG重複使用自定義過濾器,現在我試圖讓出訂單的記錄數。它工作正常,但應用產品過濾器後,它不能按預期工作。 例如:如果訂單沒有任何產品過濾後顯示當時我不希望它與我的顯示總記錄數加入做。AngularJS記錄計數嵌套NG重複

我的html代碼:

<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> 

爲了更好地理解我不想訂購的數量,顯示爲「沒有找到的產品」,與產品訂單所需的數量。 我不知道如何才能達到我的期望進行。提前需要幫助。

記錄數=(數顯示訂單 - 有沒有產品的訂單)

查找我的小提琴 「fiddle」。

+0

對不起,我沒有很瞭解你想要達到的目標。當研究沒有結果時,你不希望顯示「發現的總記錄:3」。 – quirimmo

+0

不,我想表明它具有產品 –

+0

能否請你提供你想要什麼有一個例子的順序計數?我仍然不明白它非常好,對不起,也許是我不好:( – quirimmo

回答

0

你可以觀看變化,然後調用過濾器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}} 

編輯:fiddle