2010-05-31 3 views
5

Da dojo documents su dijit.registry, vedo il metodo forEach accetta un ultimo parametro thisObject. Ma non è così che cosa sia quell'oggetto. È un widget dijit o un oggetto dojo?ottiene tutti i widget all'interno di un elemento

Voglio distruggere tutti i widget all'interno di un elemento (che verrà sostituito da AJAX) in modo che possano essere analizzati nuovamente senza ID in conflitto.

dijit.registry.forEach(function(w) { 
    w.destroyRecursive(); 
}, dojo.byId("ajaxElement")); 

Ma questo distrugge TUTTI widget sulla pagina ...

+0

Controllare questa domanda StackOverflow, è stata data risposta lì: http://stackoverflow.com/questions/2763983/dojo-and-unregistering-widgets – mtchuente

risposta

3

Il thisObject è l'oggetto scopo di richiamare la funzione passata come primo parametro di forEach.

Un paio di soluzioni è possibile usare in questo caso:

1) Utilizzare dijit.findWidgets di trovare tutte le dijits in un nodo DOM e distruggere uno per uno. dijit.findWidgets restituisce un array di widget che accetta domnode come parametro 2) dojo.parser.parse restituisce un array di tutti i dijits creati, memorizza quell'array e distrugge i dijits prima di chiamare nuovamente dijit.parser.parse.

3) Utilizzare dijit.registry.filter per filtrare i dijits che si desidera conservare.