我正在制作一个过滤器,因为我有一个数组,其对象具有不同的键组,但它们的值只是相同的。
这是我的自定义过滤器
.filter("transactionFilter", function ($filter) {
return function (data) {
if (angular.isArray(data)) {
var result = [];
angular.forEach(data, function(value , key){
if(value.type === 'Delivery'){
result.push({
"customer_name" : value.customer_id.owner_name,
"date" : value.delivery_date,
"total_amount" : value.total_amount,
"type" : value.type,
"user" : value.user
});
}else {
result.push({
"customer_name" : value.customer_name,
"date" : value.date,
"total_amount" : value.total_amount,
"type" : value.type,
"user" : value.user
});
}
});
console.log(result);
return result;
} else {
return data;
}
}
});
我在我的视图中应用我的过滤器:
<tr ng-repeat="transaction in transactions | transactionFilter">
{{transaction}}
</tr>
但是当我应用我的过滤器时,我得到了一个错误 达到10 $ digest()次迭代。中止!
答案 0 :(得分:-1)
在迭代集合时,您可以在集合中创建新对象......从来都不是一个好的想法。
滤镜应用于过滤,而不是转换模型。
试试这个:
$scope.myTransactions = function () {
var result = [];
_.each($scope.transactions, function (transaction) {
if (angular.isArray(transaction)) {
angular.forEach(transaction, function (value, key) {
if (value.type === 'Delivery') {
result.push({
"customer_name": value.customer_id.owner_name,
"date": value.delivery_date,
"total_amount": value.total_amount,
"type": value.type,
"user": value.user
});
} else {
result.push({
"customer_name": value.customer_name,
"date": value.date,
"total_amount": value.total_amount,
"type": value.type,
"user": value.user
});
}
});
} else {
result.push(transaction);
}
}
return result;
};
或者重复使用您的代码:
$scope.myTransactions= $filter('transactionFilter')($scope.transactions);
在您的视图中使用此新模型。
<tr ng-repeat="transaction in myTransactions">
{{transaction}}
</tr>