2010-05-04 11 views
26

Ich bin neu im Dojo Toolkit. Ich erhalte die FehlerDojo und Aufheben der Registrierung von Widgets

Tried to register widget with id=myButton but that id is already registered 

wenn ich versuche, zweimal Dojo Inhalt zu laden (I Last HTML-Inhalt durch jQuery.Load in einen Container div Bedeutung). Gibt es eine Möglichkeit, bereits registrierte Widgets im Dojo abzumelden? Ich habe ein paar Beispiele gesehen, aber ich kann nicht wirklich funktionieren.

Meine Taste:

<button dojoType="dijit.form.Button" id="myButton">button</button> 

Antwort

35

Wenn Sie suchen spezifische Widgets deregistrieren, können Sie deren Verwendung destroy() oder destroyRecursive() Methoden. Der zweite zerstört alle Widgets in demjenigen, den du zerstörst (d. H. Der Aufruf von destroyRecursive auf einem Formular-Widget zerstört auch alle Formularkomponenten).

In Ihrem Fall, es klingt wie die beste Wahl, dies zu tun wäre, bevor jQuery.load -

var widgets = dijit.findWidgets(<containerDiv>); 
dojo.forEach(widgets, function(w) { 
    w.destroyRecursive(true); 
}); 

Der obige Code wird alle Widgets in <containerDiv>, deregistrieren und bewahren ihre zugehörigen DOM-Knoten. Um die DOM-Knoten zu zerstören, übergeben Sie stattdessen false an destroyRecursive.

Referenz:

http://dojotoolkit.org/api/1.3/dijit/_Widget/destroyRecursive

+1

Andere suchen nach einer Lösung: Siehe auch die Antwort unten für nicht-rekursive Lösung. –

+0

Genau das, was ich gesucht habe. Vielen Dank! – mtchuente

4

Das ist für mich gearbeitet:

dijit.byId('myButton').destroy(true); 
1

Ich glaube, Sie würden besser dran mit der ID aus Schaltfläche Entfernen und den Zugriff auf sie ein Punkt anhängen verwenden. Sie würden im Grunde tun <button dojoType="dijit.form.Button" data-dojo-attach-point="myButton">button</button>

dann in Ihrem Code würden Sie wie this.myButton.... zugreifen, aber ich bin nicht sicher, welche Version von Dojo Sie verwenden. Dadurch werden alle ID-Probleme behoben, da Dojo ihm automatisch eine eindeutige ID zuweist.

Verwandte Themen