2016-01-21 132 views
0

我是Angular的新手,所以我不知道如何做到這一點,我想要的是計算過濾數組的所有結果,但問題是我想要過濾的數據是在二級數組,我已經看到堆棧溢出的一些事情,但他們都沒有工作。所以基本上我有這樣的:在子水平陣列上的角度計數項目

app.controller('mainController', function ($scope, $http, $location, $filter) { 

    var externalOrigin1 = []; 
    var externalOrigin2 = []; 
    var externalOrigin3 = []; 
    var externalOrigin4 = []; 

    $http.get('app/data.json').then(function (datos) { 
     externalOrigin1 = datos.data; 
     externalOrigin2 = datos.data;//This will later be different on each case, but array will have same structure 
     externalOrigin3 = datos.data; 
     externalOrigin4 = datos.data; 

     //Estructura de representación de datos 

     $scope.Headers = [ 
     { 
      'headerTitle': 'Morning Taskforce', 
      'headerLinkCode': 'TFC', 
      'headerData': externalOrigin1 
     }, 
     { 
      'headerTitle': 'Op Taskforce', 
      'headerLinkCode': 'opr', 
      'headerData': externalOrigin2 
     }, 
     { 
      'headerTitle': 'SAM Taskforce', 
      'headerLinkCode': 'sbgr', 
      'headerData': externalOrigin3 
     }, 
     { 
      'headerTitle': 'Undefined Section Taskforce', 
      'headerLinkCode': 'ufts', 
      'headerData': externalOrigin4 
     } 
     ]; 

     //Count all rows where ActionTaken is 'PENDING' on it, but this won't work 

     $scope.pendingCount = $filter('pendingFilter')($scope.Headers.headerData, { autr: 'PENDING' }).length; 
    }); 
}); 

上data.Json數據具有這種結構

[ 
    { 
    "_id": "569fd9c251f51d316e12efbe", 
    "actionTaken": "PENDING", 
    "actionTakenCode": "P", 
    "autr": false, 
    "action": "CANCELAR", 
    "actionAvailCode": "A", 
    "tp": "male", 
    "cta": 45.558392, 
    "doc": 25.395304, 
    "offset": 68305.2342, 
    "client": "George Oneil", 
    "terminal": 9215.6905 
    }, 
    { 
    "_id": "569fd9c27e048c82ce0564a4", 
    "actionTaken": "CANCELED", 
    "actionTakenCode": "C", 
    "autr": false, 
    "action": "AUTORIZAR", 
    "actionAvailCode": "A", 
    "tp": "male", 
    "cta": 87.114735, 
    "doc": -142.965417, 
    "offset": 827448.2097, 
    "client": "Fischer Ballard", 
    "terminal": 2654.5002 
    } 
] 

而且在我看來,我有這樣的:

<ul data-role="listview" ng-repeat="header in Headers"> 
       <li data-role="list-divider" data-theme="a"><h2>{{header.headerTitle}}</h2></li> 
       <li> 
        <table data-role="table" class="ui-grid-b ui-responsive table-stroke"> 
         <thead> 
          <tr> 
           <th> 
            ACT TAKEN 
           </th> 
           <th> 
            OWNER 
           </th> 
           <th> 
            TP 
           </th> 
           <th> 
            CT 
           </th> 
           <th> 
            DOCEMER 
           </th> 
           <th> 
            MF47 
           </th> 
           <th> 
            CLIENT 
           </th> 
           <th> 
            BUREUS 
           </th> 
          </tr> 
         </thead> 
         <tbody> 
          <tr ng-repeat="dato in header.headerData | orderBy: '-monto'"> 
           <td> 
            <span class="indicator action-{{dato.actionTakenCode}}">{{dato.actionTaken}}</span> 
           </td> 
           <td> 
            {{dato.autr}} 
           </td> 
           <td> 
            {{dato.tp}} 
           </td> 
           <td> 
            {{dato.cta}} 
           </td> 
           <td> 
            {{dato.doc}} 
           </td> 
           <td> 
            <b>{{dato.offset}}</b> 
           </td> 
           <td> 
            {{dato.cliente}} 
           </td> 
           <td> 
            {{dato.terminal}} 
           </td> 
          </tr> 
         </tbody> 
        </table> 
       </li> 
      </ul> 

迄今爲止做這將創建一個表對於每個標題和子級別數組上的數據行,但我希望有一個額外的字段來計算所有表上的所有PENDING,我嘗試使用pendingCount變量,但不起作用。

<div id="overview">PENDING OPERATORS = {{pendingCount}} </div> 

回答

0

您需要將pendingCount定義爲$ scope中的一個變量。另一種方法是在$ scope中定義一個名爲getPendingCount的函數,並在該函數中進行數學運算。如果我不清楚上下文,請告訴我,我會盡力幫助你解決這個問題。

另請參閱$ filter的文檔,因爲第二個參數必須是數組。

https://docs.angularjs.org/api/ng/filter/filter

遍歷集管陣列並要求他們中的每一個過濾器並總結量。

另一種方法是將2用於語句並計算符合條件的記錄。

+0

我設置了「$ scope.pendingCount = ...」,但事情是我無法過濾子級數組,因爲您可以看到Headers數組在headerData內有一個子級數組,這就是我的數組試圖目標和過濾 –

+0

我會嘗試它,我想知道如果角$過濾器可以在子水平陣列上工作 –

+0

我不這麼認爲,因爲你不能像$ scope.Headers.headerData中使用數組屬性的數組。您需要迭代Headers,然後爲每個Header對象調用它。 –