我有一个非常烦人的问题,我在折叠面板中有 3 个图表,并且(有时!)当我展开此面板时,它无法找到第一个图表轴的 DOM 配置。其余图表正确呈现。
不幸的是,这个错误无法始终如一地重现(我认为这与不同的布局时间有关?)而且我也无法创建一个最小的代码示例来展示它。我所拥有的是我能收集到的所有调试信息。
有人有兴趣帮助调试吗?这是我的第一个 extjs/javascript 项目,老实说,这超出了我的知识范围。如果有任何额外的信息可以帮助,请随时询问!
编辑:这里建议的是组件本身的代码。它是从处于折叠状态的主视图中调用的。展开此组件后会发生错误:
Ext.define("NewApp.view.stationView.stationView",{
extend: "Ext.panel.Panel",
alias: 'widget.stationView',
requires: [
"NewApp.view.stationView.stationViewController"
],
controller: "stationview-stationview",
layout: {
type: 'vbox',
align: 'stretch'
},
items: [{
xtype: 'container',
layout: {
type: 'hbox',
align: 'stretch'
},
flex: 1,
items:[{
xtype: 'cartesian',
reference: 'AverageDuration',
insetPadding: 10,
plugins: {
ptype: 'chartitemevents'
},
axes: [{
type: 'numeric',
position: 'left',
renderer: 'secondsToTimeAxis',
grid: true
},{
type: 'category',
position: 'bottom'
}],
series: [{
type: 'bar',
xField: 'Name',
yField: 'Average',
label: {
field: 'Average',
display: 'insideEnd',
orientation: 'horizontal',
renderer: 'secondsToTimeLabel'
}
},{
type: 'bar',
xField: 'Name',
yField: 'Estimate',
animation: {
duration: 0
},
renderer: 'EstimateRenderer'
}],
listeners: {
itemclick: 'changeStore'
},
flex: 1
},{
xtype: 'cartesian',
reference: 'Boxplot',
insetPadding: 10,
axes: [{
type: 'numeric',
position: 'left',
title: 'Frequency'
},{
type: 'category',
position: 'bottom',
renderer: 'secondsToTimeAxis',
title: 'Duration'
}],
series: {
type: 'bar',
colors: ['rgb(52,73,94)'],
xField: 'binStart',
yField: 'binCount'
},
flex: 1
}]
},{
xtype: 'cartesian',
reference: 'ControlChart',
insetPadding: 10,
height: '100%',
axes: [{
type: 'numeric',
position: 'left',
renderer: 'secondsToTimeAxis',
grid: true
},{
type: 'category',
position: 'bottom',
title: 'Main ID'
}],
series: {
type: 'line',
colors: ['rgb(52,151,219)'],
xField: 'JointID',
yField: 'Duration',
marker: {
radius: 4
},
tooltip: {
trackMouse: true,
showDelay: 0,
dismissDelay: 0,
hideDelay: 0,
renderer: 'ControlChartTooltip'
}
},
flex: 1
}],
listeners: {
stationClicked: 'stationClicked'
}
});
从我的主要观点来看,这个组件是通过以下方式调用的:
{
xtype: 'stationView',
flex: 6,
bodyPadding: 10,
id: 'stationView',
collapsible: true,
collapsed: true,
animCollapse: false,
collapseDirection: 'bottom',
listeners: {
expand: function() {
Ext.getCmp('firingLineViewExpanded').hide()
Ext.getCmp('firingLineView').show()
},
collapse: function() {
Ext.getCmp('firingLineView').hide()
Ext.getCmp('firingLineViewExpanded').show()
}
}
}