我有Ext.chart.CartesianChart
个工具。我想使用图表对象chart_o
按itemId选择工具。 getComponent
似乎不起作用。
现在我骑在chart_o.tools
上并检查itemId是否匹配。有内置方法吗?我正在使用ExtJS 5.1.0
代码:
{
xtype: "Ext.chart.CartesianChart",
id: "tensioni_modulo",
title: '<div style="line-height:28px">Tensioni (modulo)</div>',
tools: [
{
type: "maximize",
itemId: "max",
},
{
type: "minimize",
itemId: "min",
},
],
}
答案 0 :(得分:2)
我认为这是一个错误,因为tools
是一个Ext.panel.Panel
配置,它实际上是指定header
组件的子项的快捷方式 - 这些子项又是一个子项您的图表面板,因此应该可以在组件查询层次结构中访问。
在版本6中进行了测试后,似乎已经修复了 - 所以最好的办法是升级你的应用程序。但是,如果不可能,您仍然可以通过命令/手动调用getter来引用停靠的标头组件。的 即 强>
myChart.getHeader().down('#max'); // works in 5.1
答案 1 :(得分:0)
我使用Emissary's solution更新了我的功能:
function getToolByItemId(parent_id, tool_itemId) {
/**
* @author Marco Sulla (marcosullaroma@gmail.com)
* @author Emissary (https://stackoverflow.com/a/33853996/1763602)
* @date Nov 20, 2015
*/
var p = Ext.getCmp(parent_id);
if (! p) {
throw new Error("No component with id '" +
parent_id.toString() + "'");
}
var h = p.getHeader();
if (! h) {
throw new Error("Component '" + parent_id.toString() +
"' has no header");
}
var tool = h.down("#" + tool_itemId);
if (! tool) {
throw new Error("No tool with itemId '" +
tool_itemId.toString() +
"' in component '" +
parent_id.toString() + "'");
}
return tool;
}