2012-05-17 15 views
2

我有這這樣定義的菜單:ExtJS的菜單插入新的項目與覆蓋

Ext.define('MyApp.FileBrowserContextMenu', { 
    extend: 'Ext.menu.Menu', 

    initComponent: function() { 
     var me = this; 

     Ext.applyIf(me, { 
      items: [ 
       { 
        xtype: 'menuitem', 
        text: 'Edit', 
        listeners: { 
         click: { 
          fn: me.onMenuitemClick, 
          scope: me 
         } 
        } 
       }, 
      ] 
     }); 

     me.callParent(arguments); 
    }, 

    onMenuitemClick: function(item, e, options) { 
     var server = this.record; 
     var win = Ext.create('widget.ServerWindow', { 
      record: server 
     }); 
     win.show(); 
    } 

}); 

我想定義後,添加新的項目,所以我嘗試這樣的:

首先我定義的新菜單項:

Ext.define('MyApp.GitMenuItem', { 
    extend: 'Ext.menu.Item', 
    alias: 'widget.gitmenuitem', 

    text: 'Git', 

    initComponent: function() { 
     var me = this; 

     Ext.applyIf(me, { 
      menu: { 
       xtype: 'menu', 
       items: [ 
        { 
         xtype: 'menuitem', 
         text: 'Commit', 
         listeners: { 
          click: { 
           fn: me.onMenuitemClick, 
           scope: me 
          } 
         } 
        }, 
       ] 
      } 
     }); 

     me.callParent(arguments); 
    }, 

    onMenuitemClick: function(item, e, options) { 

    }, 

}); 

然後我嘗試將新的菜單項:

Ext.override(MyApp.FileBrowserContextMenu, { 
    initComponent: function() { 
     var me = this; 
     this.callParent(); 
     me.items.items.push(Ext.create('widget.gitmenuitem')); 
    } 
}); 

看來工作,因爲新菜單項出現,但是當我走了過來,然後新的項目應該出現的,但我得到這個錯誤:

遺漏的類型錯誤:無法設置屬性「activeChild」的未定義

任何ideads?

+0

可以把它弄出來嗎? –

+0

我現在正在做,準備就會發布。 – Charles

+0

你究竟想達到什麼目的?看起來像你選擇不是非常直接的方式來解決出租車解析不同的東西:) – sha

回答

2

通常的方法是添加方法:menu.add(menuItem)