2012-11-08 16 views
5

Sono nuovo per gli extj. Desidero associare un negozio alla selezione di una voce di menu da Ext.menu.Menu. Sto usando extjs 4.1.0. Ho cercato su internet anche attraverso sencha doc ma non sono riuscito a trovare alcun modo per raggiungere questo obiettivo.Associare un negozio con Ext.menu.Menu

C'è un modo per raggiungerlo?

Grazie in anticipo.

risposta

12

Sto utilizzando un menu con un negozio in un progetto. Ecco un esempio:

Ext.define("Ext.ux.menu.DynamicMenu", { 
    extend: "Ext.menu.Menu", 
    alias: 'widget.dynamicmenu', 
    loaded: false, 
    loadMsg: 'Loading...', 
    store: undefined, 
    icon: '', 
    constructor: function (config) { 
     var me = this; 
     Ext.apply(me, config); 

     me.callParent(); 
    }, 
    initComponent: function() { 
     var me = this; 
     me.callParent(arguments); 
     me.on('show', me.onMenuLoad, me); 
     listeners = { 
      scope: me, 
      load: me.onLoad, 
      beforeload: me.onBeforeLoad 
     }; 
     me.mon(me.store, listeners); 
    }, 
    onMenuLoad: function() { var me = this; if (!me.store.loaded) me.store.load(); }, 
    onBeforeLoad: function (store) { this.updateMenuItems(false); }, 
    onLoad: function (store, records) { this.updateMenuItems(true, records); }, 
    updateMenuItems: function (loadedState, records) { 
     var me = this; 
     me.removeAll(); 
     if (loadedState) { 
      me.setLoading(false, false); 
      Ext.Array.each(records, function (record, index, array) { 
       me.add({ 
        text: record.get('DisplayName'), 
        data: record, 
        icon: me.icon 
       }); 

      }); 
      me.store.loaded = true; 
     } 
     else { 
      me.add({ width: 75, height: 40 }); 
      me.setLoading(me.loadMsg, false); 
     } 
     me.loaded = loadedState; 
    } 
}); 

ho trovato questo uno sul forum di Sencha se IIRC, ma non riesce a trovare più il link. Ho apportato alcune modifiche alle icone, ecc ...

Su Ext.Array.each (record, .... È necessario definire la propria logica, Dipende dal modello. DisplayName che io uso per mostrare come testo. ho anche STOCK mio record in una proprietà di dati che ho fatto nella voce di menu. Sei completamente libero là.

Buona fortuna!

Problemi correlati