如何通过 itemId 从 ExtJS 中的 CartesianChart 对象获取工具

How to get a tool by itemId from a CartesianChart object in ExtJS

我有一个 Ext.chart.CartesianChart 和工具。我想 select itemId 的工具,使用图表对象 chart_ogetComponent 好像不行。

现在我正在 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",
        },
    ],
}

编辑:

我使用 更新了函数:

function getToolByItemId(parent_id, tool_itemId) {
    /**
     *  @author Marco Sulla (marcosullaroma@gmail.com)
     *  @author Emissary (
     *  @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;
}

我认为这是一个错误,因为 tools 是一个 Ext.panel.Panel 配置,它实际上是指定 header 组件的 child 项的快捷方式 - 在turn 只是图表面板的 child,因此应该可以在 component-query 层次结构中访问。

在版本 6 中对此进行了测试,它似乎已得到修复 - 因此最好的办法是升级您的应用程序。但是,如果那不可能,您仍然可以通过强制/手动调用 getter 来引用停靠的 header 组件。

myChart.getHeader().down('#max'); // works in 5.1