2010-01-22 9 views
6

Ho una domanda per quanto riguarda le prestazioni, l'affidabilità e il metodo migliore pratica di usare il metodo di ExtJS update(), contro l'aggiornamento direttamente l'innerHTML del DOM di un elemento Ext.domanda utilizzando l'aggiornamento di Ext() al posto di dom.innerHTML

Considerate le due affermazioni:

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

e

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

Io non hanno bisogno di eval() qualsiasi script, e sono certo che update() prende in considerazione eventuali capricci del browser.


Inoltre, qualcuno sa se si utilizza:

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

è lo stesso di

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

?
browser e la compatibilità della piattaforma sono importanti, e se i due sono fondamentalmente gli stessi, quindi ammaraggio Ext.element.dom.innerHTML del tutto per update() probabilmente sarebbe la mia soluzione migliore.

Grazie in anticipo per il vostro aiuto,

Brian

risposta

4

Se non è necessario caricare gli script in modo dinamico nel tuo html aggiornato o elaborare una richiamata dopo l'aggiornamento, poi i due metodi che hai delineato sono equivalente. La maggior parte del codice in update() aggiunge le funzionalità di caricamento e callback degli script. Internamente, imposta semplicemente il innerHTML per eseguire la sostituzione del contenuto.

Ext.fly().dom restituisce un nodo DOM semplice, quindi sì, equivale al risultato di getElementById() in termini di nodo a cui punta. L'unica sottigliezza da capire è la differenza tra Ext.fly() e Ext.get(). Ext.fly() restituisce un'istanza condivisa dell'oggetto nodo wrapper (un peso mosca). In quanto tale, tale istanza potrebbe in seguito indicare un diverso nodo dietro le quinte se qualsiasi altro codice chiama Ext.fly(), incluso il codice Ext interno. Pertanto, il risultato di una chiamata a Ext.fly() deve essere utilizzato solo per le operazioni atomiche e non riutilizzato come oggetto longevo. Ext.get().dom d'altra parte restituisce una nuova istanza oggetto unico, e in questo senso, sarebbe più come getElementById().

+0

Quindi, per dirla in sostanza, a meno che non ho voglia di elaborare un callback o eval qualche script, quindi utilizzando 'update()' è più o meno eccessivo. Lo capisco correttamente? mia preoccupazione principale è la compatibilità del browser. Quindi in questi termini, 'update()' ha qualche vantaggio su 'Ext.fly(). Dom'? Grazie !! – DondeEstaMiCulo

+0

Non fa differenza. Non è eccessivo: è esattamente lo stesso. Non c'è differenza di compatibilità. –

2

Penso che tu abbia risposto alla tua stessa domanda: "La compatibilità del browser e della piattaforma è importante, e se i due sono fondamentalmente la stessa cosa, quindi abbandonare completamente Ext.element.dom.innerHTML per update() sarebbe probabilmente la mia soluzione migliore ". Le librerie JS sono intese (in parte) a astrarre le differenze tra i browser; aggiornamento è un esempio.

@bmoeskau scritto sopra, update() fornisce funzionalità aggiuntiva che non è necessario giusta per il vostro problema attuale. Tuttavia, l'aggiornamento è una buona scelta.

Problemi correlati