Вопрос об использовании Ext (update) вместо dom.innerHTML - PullRequest
6 голосов
/ 22 января 2010

У меня есть вопрос, касающийся производительности, надежности и метода наилучшей практики использования метода update () Extjs, а не прямого обновления innerHTML dom элемента Ext.

Рассмотрим два утверждения:

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

и

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

Мне не нужно eval() никаких сценариев, и я уверен, что update() учитывает любые особенности браузера.


Кроме того, кто-нибудь знает, если использовать:

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

совпадает с

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


Совместимость с браузером и платформой важна, и, если они в основном одинаковы, то, скорее всего, лучшим решением будет отказ от Ext.element.dom.innerHTML за update().

Заранее спасибо за помощь,

Brian

Ответы [ 2 ]

4 голосов
/ 22 января 2010

Если вам не нужно динамически загружать скрипты в ваш обновленный html или обрабатывать обратный вызов после обновления, то два описанных вами метода эквивалентны. Большая часть кода в update() добавляет возможности загрузки скриптов и обратного вызова. Внутренне он просто устанавливает innerHTML для замены содержимого.

Ext.fly().dom возвращает простой узел DOM, так что да, он эквивалентен результату getElementById() в терминах узла, на который он указывает. Единственная тонкость, которую нужно понять, это разница между Ext.fly () и Ext.get (). Ext.fly () возвращает общий экземпляр объекта-обертки узла (весовой элемент). Таким образом, этот экземпляр может позднее указывать на другой узел за сценой, если любой другой код вызывает Ext.fly (), включая внутренний код Ext. Таким образом, результат вызова Ext.fly () должен использоваться только для атомарных операций и не использоваться повторно как долгоживущий объект. Ext.get().dom с другой стороны, возвращает новый, уникальный экземпляр объекта, и в этом смысле он больше похож на getElementById ().

2 голосов
/ 22 января 2010

Я думаю, что вы ответили на свой собственный вопрос: "Совместимость браузера и платформы важна, и если они в принципе одинаковы, то для меня совсем не обязательно использовать Ext.element.dom.innerHTML для update ()решение. " JS-библиотеки (частично) предназначены для абстрагирования от различий между браузерами;Обновление является примером.

@ bmoeskau, написанное выше, update () предоставляет дополнительные функции, которые вам не нужны для решения вашей текущей проблемы.Тем не менее, обновление - хороший выбор.

...