Как динамически добавлять инструменты в окно Ext Js? - PullRequest
2 голосов
/ 15 июля 2011

Я хочу добавить инструмент (поиск, помощь, снаряжение, ...) в окне динамически, например: 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 нет опции Tools во время разработки (я не нашел).

Я добавлял инструмент снаружи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 в этом конкретном случае?

1 Ответ

3 голосов
/ 15 июля 2011

положить 'инструменты' в initComponent

UIMyWindow = Ext.extend(UIMyWindowUi, {  

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