2011-03-28 62 views
0

我有一個類型爲Ext.Panel的mediaGrid。該面板包含一個帶按鈕組項的tbar,其中包含帶複選框的菜單。我需要能夠訪問從mediaGrid聲明外檢查哪些框,但我不知道如何做到這一點。下面是媒體網格聲明:如何訪問ExtJS中面板的tbar中的菜單?

var mediaGrid = new Ext.Panel({ 
    id: 'mediaviewer', 
    region: 'center', 
    border: false, 
    items: mediaDataView, 
    style: 'border-left: 1px solid #d0d0d0', 

    tbar: [ 
     { 
      xtype: 'buttongroup', 
      title: 'Filters', 
      items: [ 
       { 
        text: 'Show', 
        icon: '/img/picture.png', 
        iconAlign: 'top', 
        menu: { 
         xtype: 'menu', 
         defaults: { 
          hideOnClick: false, 
          listeners: { 
           checkchange: function (checkitem) { 
            var menu = checkitem.ownerCt; 
            var values = []; 

            if (menu.pictureCheck.checked) { 
             values.push('picture'); 
            } 
            if (menu.videoCheck.checked) { 
             values.push('video'); 
            } 
            if (menu.noteCheck.checked) { 
             values.push('note'); 
            } 

            if (values.length == 0) { 
             values.push('none'); 
            } 

            mediaStore.reload({ params: { type: values.toString()} }); 
           } 
          } 
         }, 

         items: [ 
          { 
           text: 'Pictures', 
           checked: true, 
           ref: 'pictureCheck' 
          }, 
          { 
           text: 'Videos', 
           checked: true, 
           ref: 'videoCheck' 
          }, 
          { 
           text: 'Notes', 
           checked: true, 
           ref: 'noteCheck' 
          } 
         ] 
        } 
       } 

      ] 
     }, 
     '->', 
     { 
      xtype: 'searchfield', 
      store: mediaStore, 
      emptyText: 'Search', 
      enableKeyEvents: true, 
      listeners: { 
       keyup: { 
        fn: function (thisField, e) { 
         if (!e.isNavKeyPress() && thisField.isValid()) { 
          thisField.onTrigger2Click(); 
         } 
        }, 
        buffer: 500 
       } 
      } 
     }, 
     ' ', 
     ' ' 
    ] 
}); 

我還有一個面板,點擊後,打開一個Ext.Window到一個新的節點添加到媒體的GridPanel上的按鈕。當用戶點擊'保存'時,它應該將註釋添加到GridPanel,但它也應該檢查菜單以查看是否打開顯示註釋的過濾器。這就是爲什麼我需要訪問菜單。有誰知道如何訪問mediaGrid中的菜單?

回答

2

您可以隨時在面板外創建對象,然後將其包含在面板中。這可以讓你在任何你喜歡的地方找到他們的參考。

例如:

var menu = new Ext.menu.Menu({ 
    //your menu configuration 
}); 

var tbar = new Ext.Toolbar({ 
    //your toolbar configuration 
    //... 
    items: [menu] //and so on 
}); 

var mediaGrid = new Ext.Panel({ 
    //your mediagrid configuration 
    tbar: tbar 
}); 
+0

非常感謝!這很好。 – MBU 2011-03-28 21:39:10

-1

您也可以給TBAR和ID ...那麼你可以嘗試使用Ext.getCmp();