2011-01-07 5 views
5

Ich habe ein ContentPane erstellt sowohl deklarative und programmatische.mit onShow und onLoad für dijit.layout.ContentPane erstellt programatic

deklarative:

<div dojoType="dijit.layout.ContentPane" id="abccp" href="abc.php?id=1" title="abc" onShow="do_abc()"> 

Programmatische

var obj_abc; 
var abchref= "abc.php?id=1"; 
obj_abc = new dijit.layout.ContentPane({id:'abccp',title:'abc', href:abchref}); 

Wie kann ich do_abc() in der programmatischen Ex nennen

Antwort

8

Um zu Ihrem ersten Beispiel technisch gleichwertig zu sein, würden Sie gerade sind: onShow: do_abc innerhalb des arguments-Objekts, das an den Konstruktor von ContentPane übergeben wird. (Beachten Sie keine Klammern nach do_abc - wir interessieren uns für das Funktionsobjekt selbst, nicht das Ergebnis des Aufrufs!)

Allerdings, wenn Sie es in einer etwas erweiterbaren Mode tun möchten, dann ich Würd es so empfehlen tun:

obj_abc = new dijit.layout.ContentPane(...); 
obj_abc.connect(obj_abc, 'onShow', do_abc); 

Was dies tut, ist eine gemeinsame Ausstrahlung durchzuführen, dass immer dann, wenn obj_abc 's onShow Methode aufgerufen wird, die do_abc Funktion wird wiederum (wenn auch im Rahmen der obj_abc genannt werden, die Vermutlich ist das was du willst). Sie erhalten auch die folgenden zusätzlichen Boni:

  • Es ist nicht mehr clobbers jede Standard-Funktionalität, die in dem Verfahren ursprünglich vorhanden sein könnte
  • Sie (wenn auch in diesem Fall onShow a Stummel zu verprügeln-able gemeint sind) kann auf diese Weise eine beliebige Anzahl von Funktionen an onShow anschließen
  • Die Verbindung wird automatisch zerstört, wenn das Widget zerstört wird (im Gegensatz zu dojo.connect, die Sie manuell abbrechen müssten).

Für weitere Informationen:

+0

Vielen Dank, es hat funktioniert! – noru

+0

Hallo Ken Ich habe Probleme mit einigen Dojo können Sie bitte überprüfen: http://StackOverflow.com/Questions/18122473/dojo-is-not-working – GingerHead

Verwandte Themen