我已经坚持了2天,尝试了很多方法仍然无法做到这一点。我无法更改API数据,因此我必须处理前端处理。我真的需要一些帮助。
$scope.stationary = [{
"name": "Pen",
"data": [{
"date": "1-10-2017",
"inventory": 25
}, {
"date": "2-10-2017",
"inventory": 21
}]
}, {
"name": "Color Pencil",
"data": [{
"date": "1-10-2017",
"inventory": 3
}, {
"date": "2-10-2017",
"inventory": 0
}]
}, {
"name": "Color Pencil Special",
"data": [{
"date": "1-10-2017",
"inventory": 2
}, {
"date": "2-10-2017",
"inventory": 1 // make this view to '-' since inventory of color pencil is zero
}]
}]
如果彩色铅笔的库存为零,则应在彩色铅笔专栏上显示“ - ”。
答案 0 :(得分:0)
试试这个:
更新了答案:
myApp.filter('customFilter', function() {
return function(items) {
for (var i = 0; i < items.length; i++) {
for (var k = 0; k < items[i].data.length; k++) {
if (i != 0 && items[i - 1].data[k].inventory == 0) {
items[i].data[k]['isZero'] = true;
} else {
items[i].data[k]['isZero'] = false;
}
}
}
return items;
};
});
请参阅Updated jsfiddle
link。
这对我有用。
答案 1 :(得分:0)
猜猜你必须自己操纵数据,你不能简单地使用过滤器来处理这种特殊情况。
这是我的小提琴:http://jsfiddle.net/op2zd2vr/2/
使用的解决方案(取决于数据的名称):
var positions = [];
$scope.stationary.forEach(function (s) {
if(s.name === 'Color Pencil'){
for(var i = 0; i < s.data.length; i++){
if(s.data[i].inventory === 0){
positions.push(i);
}
}
}
if(s.name === 'Color Pencil Special'){
for(var i = 0; i < s.data.length; i++){
if(positions.indexOf(i) >= 0){
s.data[i].inventory = '-';
}
}
}
});