2012-09-14 11 views
6

Ho bisogno di aggiungere un MenuItem appena creato in fase di esecuzione; quindi il mio codice attualmente si presenta come:ExtJS: aggiungi nuovo MenuItem all'istanza Menu in fase di esecuzione

var myMenu = myCmp.query('mymenu')[0]; // retrieve my only Menu object 
var menuItem = Ext.create('Ext.menu.Item', { 
    itemId: 'myItemId', text: 'textGoesHere' 
}); 
myMenu.add(menuItem); 

Sto utilizzando la add method per aggiungere la voce; ma non succede nulla alle voci del menu durante l'esecuzione. Anche se il debug mostra che il nuovo elemento è stato effettivamente aggiunto alla configurazione items dell'istanza Menu.

L'utilizzo del remove method tuttavia funziona, in fase di esecuzione.

Domanda: Come visualizzare il MenuItem appena aggiunto in fase di esecuzione? Cosa mi manca?

UPDATE: il codice sopra funziona; Ho avuto un'istruzione switch errata che stava causando un altro passaggio attraverso la logica, rimuovendo l'ultimo menuItem creato.

+0

Hai provato ad applicare solo una configurazione? Forse c'è un bug? Fondamentalmente questo dovrebbe funzionare immediatamente senza bisogno di chiamate aggiuntive. – sra

+0

@sra Sono d'accordo con te sul fatto che dovrebbe funzionare immediatamente. Cosa intendi con "* applica solo una configurazione *"? Grazie. –

+0

Ho pubblicato un esempio che funziona. Fammi sapere se hai bisogno di ulteriori informazioni/aiuto – sra

risposta

5

commento urtare

Il PO ha scritto

OK a monitorare il problema verso il basso; Avevo una dichiarazione dell'interruttore errata che era causando un altro passaggio attraverso la logica, rimuovendo l'ultimo menu menuItem. Segnalo comunque la tua risposta nel modo corretto così come funziona anche (passando l'obj di configurazione).


Questo esempio funziona:

var menu = Ext.create('Ext.menu.Menu', { 
    width: 100, 
    height: 100, 
    floating: false, // usually you want this set to True (default) 
    renderTo: Ext.getBody(), // usually rendered by it's containing component 
    items: [{ 
     text: 'icon item', 
     iconCls: 'add16' 
    },{ 
     text: 'text item' 
    },{ 
     text: 'plain item', 
     plain: true 
    }] 
}); 

menu.add({text:'test'}); 

io non sono del tutto sicuro, ma secondo l'API il menu ha pannello come tipo di default quando si guarda la menu ma sembra essere menuitem secondo al menuitem API
Questo potrebbe essere un po 'di confusione.

+0

OK, rintraccio il problema; Ho avuto un'istruzione 'switch' imperfetta che stava causando un altro passaggio attraverso la logica, rimuovendo l'ultimo menuItem creato. Segnalo comunque la tua risposta corretta così come funziona (passando l'obj di configurazione). –

+1

@JosvicZammit Finché ho potuto aiutare e ora funziona;) – sra

+0

@sra Potresti aggiornare la risposta per dire in cima che la risposta dell'OP * funziona * così com'è? Non ho letto i commenti la prima volta che sono venuto qui e sono andato su una caccia all'oca selvaggia cercando di forzare il rendering impaziente su una voce di menu aggiunta come oggetto di configurazione. Per chiarire, l'approccio dell'OP * funziona * esattamente come è. –

Problemi correlati