2014-12-03 83 views
1

我想將商店與拆分按鈕菜單相關聯。我使用extjs版本5.我在網上搜索,甚至通過sencha文件,但我無法找到一種方法來實現這一點。ExtJS 5 - 從商店動態添加項目以拆分按鈕菜單

目前我在變量中持有菜單細節並將其分配給splitbutton xtyoe菜單property.I想要實現相同的使用存儲,您的幫助非常感謝!

的程序代碼: -

 var menuJSON = [{ 
      text:'Menu1', 
      menu:[{text:'Submenu1'},{text:'Submenu2'}] 
     },{ 
      text:'Menu2', 
      menu:[{text:'Submenu1'},{text:'Submenu2'}] 
     },{ 
      text:'Menu3', 
      menu:[{text:'Submenu1'},{text:'Submenu2'}] 
     },{ 
      text:'Menu4' 
     },{ 
      text:'Menu5', 
      menu:[{text:'Submenu1'},{text:'Submenu2'}] 
     }]; 
     { 
     region: 'south', 
     fbar: [{ 
      xtype:'splitbutton', 
      id: 'app-starterMenu', 
      text:'Start', 
      scale:'small', 
      iconCls:'icon-start', 
      menuAlign: 'bl-tl', 
      menu: menuJSON 
     }] 
     } 

提前感謝!

回答

2

如果您可以提供商店或相關控制器的示例代碼將會很有幫助,但這仍然比您想象的要容易。當然,這並不意味着什麼,但它是使用監聽器的最佳例子。

每當商店更改數據時,您都希望更新按鈕配置。因此,只需將相關監聽器添加到您的商店 - 可能使用刷新或更新事件(取決於您的具體使用情況)。然後,每當商店數據發生變化時,您需要獲取對按鈕(或相關菜單)的引用並更新商品。以最簡單的形式,一個例子可能如下:

store: { 
    listeners: { 
     refresh: function(store) { 
      // Get all the raw data from records and use it to set items on the menu 
      var rawData = Ext.Array.pluck(store.getRange(),'data'); 
      Ext.getCmp('app-starterMenu').setMenu({ 
       items: rawData 
      }); 
      // *OR* Loop through the store data conditionally and include what you need 
      Ext.getCmp('app-starterMenu').getMenu().removeAll(); 
      store.each(function(record){ 
       Ext.getCmp('app-starterMenu').getMenu().add(record.getData()); 
      }); 
     } 
    } 
} 
+0

謝謝OhmzTech!它有幫助,但可以動態地爲所有這些菜單/子菜單分配監聽器嗎? – 2015-02-03 21:05:01

+0

是的,你只需要獲取對該項目的引用並執行「.addListener('refresh',function(){})」 – OhmzTech 2015-02-04 21:24:00