2015-11-20 2 views
0

У меня есть Ext.chart.CartesianChart с инструментами. Я хотел бы выбрать инструмент itemId, используя объект диаграммы chart_o. getComponent похоже не работает.Как получить инструмент по itemId из объекта CartesianChart в ExtJS

На данный момент я еду на велосипеде по 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", 
     }, 
    ], 
} 

ответ

2

Я считаю, что это ошибка, как tools является конфигурация Ext.panel.Panel, которая эффективно является ярлыком для указания дочерних элементов компонента header, который, в свою очередь, является только вашим ребенком r и, следовательно, должны быть доступны в иерархии компонентов-запросов.

Проверяя это в версии 6, он, кажется, исправлен - так что лучше всего обновить приложение. Однако, если это невозможно, вы все равно можете ссылаться на пристыкованный компонент заголовка, вызвав геттер императивно/вручную. т.е.

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

Спасибо за подробную информацию о фактической иерархии компонентов инструмента. –

0

EDIT:

Я обновил свою функцию с помощью Emissary's solution:

function getToolByItemId(parent_id, tool_itemId) { 
    /** 
    * @author Marco Sulla ([email protected]) 
    * @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; 
} 
Смежные вопросы