在子水平阵列上的角度计数项目
问题描述:
我是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>
答
您需要将pendingCount定义为$ scope中的一个变量。另一种方法是在$ scope中定义一个名为getPendingCount的函数,并在该函数中进行数学运算。如果我不清楚上下文,请告诉我,我会尽力帮助你解决这个问题。
另请参阅$ filter的文档,因为第二个参数必须是数组。
https://docs.angularjs.org/api/ng/filter/filter
遍历集管阵列并要求他们中的每一个过滤器并总结量。
另一种方法是将2用于语句并计算符合条件的记录。
我设置了“$ scope.pendingCount = ...”,但事情是我无法过滤子级数组,因为您可以看到Headers数组在headerData内有一个子级数组,这就是我的数组试图目标和过滤 –
我会尝试它,我想知道如果角$过滤器可以在子水平阵列上工作 –
我不这么认为,因为你不能像$ scope.Headers.headerData中使用数组属性的数组。您需要迭代Headers,然后为每个Header对象调用它。 –