Как динамически добавлять инструменты в окно Ext Js?

Я хочу добавить инструмент (поиск, справка, шестерня, ...) в окно динамически, например: http://www.rahulsingla.com/sites/default/files/content/blog/extjs/extjs-panel-add-tool.htm< /а>

И мне нужно создать более одного экземпляра UIMyWindow одновременно.

Однако я использую Ext Designer, который создает 2 файла:

  • MyWindow.ui.js: объявление класса.
  • MyWindow.js: реализация методов.

Кроме того, в Ext Designer нет опции «Инструменты во время разработки» (я не нашел).

Я добавлял инструмент вне MyWindow.js и MyWindow.ui.js, например:

var winMyWindow = new UIMyWindow({
    autoShow: 'true', 
    tools: [{
               type:'gear',
               handler: function(){
                   // Some code...
               }
    }]
});

Но я хочу поместить этот блок внутрь MyWindow.js. Итак, я сделал это:

UIMyWindow = Ext.extend(UIMyWindowUi, {
    tools: [{
               type:'gear',
               handler: function(){
                   // Some code...
               }
    }],

initComponent: function() {
   UImenuDock.superclass.initComponent.call(this);

Если вы спросите меня «Почему бы не поместить этот код в MyWindow.ui.js?», я отвечу: «Потому что я не хочу помещать этот код вручную каждый раз, когда я вношу изменения в файл дизайна (Ext Designer)».

Ну, если я открываю одно окно, то вроде работает нормально, но если я одновременно открываю второе, инструменты дублируются во втором окне...

Итак, есть идеи, как динамически добавлять инструменты в MyWindow.js в этом конкретном случае?


person Roberto Schuster    schedule 15.07.2011    source источник


Ответы (1)


поместите «инструменты» в initComponent

UIMyWindow = Ext.extend(UIMyWindowUi, {  

initComponent: function() {
  this.tools = [{
               type:'gear',
               handler: function(){
                   // Some code...
               }
    }], 
  UImenuDock.superclass.initComponent.call(this);
person Molecular Man    schedule 15.07.2011