2010-01-22 7 views
6

Ich habe eine Frage bezüglich der Leistung, Zuverlässigkeit und Best-Practice-Methode der Verwendung von Extjs update() -Methode gegenüber dem direkten Aktualisieren der innerHTML des dom eines Ext-Elements.Frage mit Ext's update() anstelle von dom.innerHTML

Betrachten sie die beiden Aussagen:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!'; 

und

Ext.fly('element.id').update('Welcome, Dude!', false); 

ich jedes Skript eval() nicht brauchen, und ich bin sicher, dass update() in Betracht Macken jeden Browser nimmt.


Auch weiß jemand, ob mit:

Ext.fly('element-id').dom.innerHTML 

die gleichen wie

ist
d.getElementById('element-id').innerHTML 

?
Browser-und Plattform-Kompatibilität sind wichtig, und wenn die beiden im Grunde die gleichen sind, dann würde Ext.element.dom.innerHTML insgesamt für update() Graben würde wahrscheinlich meine beste Lösung sein.

Vielen Dank im Voraus für Ihre Hilfe,

Brian

Antwort

4

Wenn Sie benötigen, um einen Rückruf nach dem Update nicht Scripts geladen werden dynamisch in die aktualisierte html oder verarbeiten, dann die beiden Methoden, die Sie skizziert haben, sind gleichwertig. Der Großteil des Codes in update() fügt die Skriptlade- und Rückruffunktionen hinzu. Intern wird einfach das innerHTML für den Inhaltsersatz festgelegt.

Ext.fly().dom gibt einen einfachen DOM-Knoten zurück, also ja, es entspricht dem Ergebnis von getElementById() in Bezug auf den Knoten, auf den es zeigt. Die einzige Subtilität ist der Unterschied zwischen Ext.fly() und Ext.get(). Ext.fly() gibt eine gemeinsam genutzte Instanz des Node-Wrapper-Objekts (ein Flyweight) zurück. Daher kann diese Instanz später auf einen anderen Knoten im Hintergrund verweisen, wenn ein anderer Code Ext.fly() aufruft, einschließlich internem Ext-Code. Daher sollte das Ergebnis eines Aufrufs von Ext.fly() nur für atomare Operationen verwendet und nicht als langlebiges Objekt wiederverwendet werden. Ext.get().dom gibt dagegen eine neue, eindeutige Objektinstanz zurück und wäre in diesem Sinne eher wie getElementById().

+0

Also, um es im Grunde genommen zu machen, wenn ich nicht einen Callback verarbeiten oder einige Skripte auswerten will, dann ist 'update()' mehr oder weniger Overkill. Verstehe ich das richtig? Mein Hauptanliegen ist Browserkompatibilität. Also hat 'update()' einen Vorteil gegenüber 'Ext.fly(). Dom'? Danke !! – DondeEstaMiCulo

+0

Es macht keinen Unterschied. Es ist nicht übertrieben - es ist genau dasselbe. Es gibt keinen Unterschied in der Kompatibilität. –

2

Ich denke, Sie haben Ihre eigene Frage beantwortet: "Browser-und Plattform-Kompatibilität sind wichtig, und wenn die beiden im Grunde gleich sind, würde dann ext.element.dom.innerHTML insgesamt für update() würde meine beste Lösung sein . " JS-Bibliotheken sind (teilweise) dazu gedacht, Browser-Unterschiede zu abstrahieren; Update ist ein Beispiel.

@bmoeskau schrieb oben, update() bietet zusätzliche Funktionalität, die Sie für Ihr aktuelles Problem nicht benötigen. Trotzdem ist update eine gute Wahl.