我在过滤图表字段时遇到问题。
我有一个包含一些字段的图表饼图。
用户可以过滤图表饼图并选择他想要查看的字段。
问题是,如果饼图有 8 个字段,而用户只选择了 6 个字段,则过滤器只过滤数据但不过滤字段。
例如,如果我有字段
{name:'Asia','data1':9, sex:'Male'},
{name:'Africa','data1':2, sex:'Male'},
{name:'Europe','data1':5, sex:'Female'},
{name:'USA','data1':3, sex:'Male'},
我想过滤亚洲、非洲和欧洲,我仍然可以看到美国名称字段(没有数据)。
编码:
storeIng.filterBy(function(record,id){
var fieldName = record.get('name')
for(var i = 0; i < fields.length; i++) {
if (fields[i] === fieldName)
return true;
}
return false;
});
我也添加了屏幕截图
前
http://i45.tinypic.com/1eq74i.jpg
后
http://i45.tinypic.com/1z1zofq.jpg
最佳答案
既然你给出的代码不多,不妨试试这段代码引用一下,看看哪里出错了。你写的 filterBy 函数好像没问题。如果其他人在过滤商店数据时遇到问题,这也可以帮助他们阅读本文。
Ext.onReady(function(){
var data=[
{name:'Asia','data1':9, sex:'Male'},
{name:'Africa','data1':2, sex:'Male'},
{name:'Europe','data1':5, sex:'Female'},
{name:'USA','data1':3, sex:'Male'}
]
var store = Ext.create('Ext.data.JsonStore', {
fields: ['name', 'data1','sex'],
data:data
});
store.filterBy(function(record,id){
if(record.get('name')==="Asia")
return true;
})
Ext.create('Ext.chart.Chart', {
renderTo: Ext.getBody(),
width: 500,
height: 350,
animate: true,
store: store,
theme: 'Base:gradients',
series: [{
type: 'pie',
angleField: 'data1',
showInLegend: true,
highlight: {
segment: {
margin: 20
}
},
label: {
field: 'name',
display: 'rotate',
contrast: true,
font: '18px Arial'
}
}]
});
});
关于extjs - 过滤后的 ext js 更新图表饼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331559/