Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 子级数组上的角度计数项_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript 子级数组上的角度计数项

Javascript 子级数组上的角度计数项,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我不熟悉Angular,所以我不知道怎么做,我想要的是计算一个过滤数组的所有结果,但问题是我想要过滤的数据在第二级数组上,我在堆栈溢出上看到了一些东西,但它们似乎都不起作用。所以基本上我有: app.controller('mainController', function ($scope, $http, $location, $filter) { var externalOrigin1 = []; var externalOrigin2 = []; var exter

我不熟悉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;
    });
});
 <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>
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
  }
]
在我看来,我有:

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;
    });
});
 <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>
  • {{{header.headerTitle}
  • 采取的行动 所有者 总磷 计算机断层扫描 医生 MF47 客户 布雷乌斯 {{dato.actiontaked}} {{dato.autr}} {{dato.tp}} {{dato.cta}} {{dato.doc} {{dato.offset} {{dato.cliente}} {{dato.terminal}}
到目前为止,这确实为每个头创建了一个表,并为子级别数组上的数据创建了行,但我希望有一个额外的字段来统计所有表上所有挂起的数据,我尝试使用pendingCount变量,但不起作用

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

您需要将pendingCount定义为$scope中的变量。另一种方法是在$scope中定义一个名为getPendingCount的函数,并在该函数中进行计算。如果我不清楚上下文,请告诉我,我会尽力帮助你解决这个问题

还要看一下$filter的文档,因为第二个参数必须是数组

迭代Headers数组,并为其中的每一个调用筛选器,并对数量求和


另一种方法是对语句使用2,并对符合条件的记录进行计数。

我设置了“$scope.pendingCount=…”但问题是我不能筛选子级别数组,因为您可以看到headerData中的HeaderArray有一个子级别数组,这是我试图针对的数组,filterI将尝试使用它,我想知道angular$filter是否可以在子级别数组上工作,我不这么认为,因为您无法使用$scope.headerData中的数组属性获取数组。您需要迭代标题,然后为每个标题对象调用它。