Эти два бита кода делают разные вещи.Этот код:
<script type="text/javascript">
$('#region_center .x-panel-body').html('this is from jquery...');
</script>
... обращается к узлу DOM по адресу "#region_center .x-panel-body" и вводит новое значение innerHTML.Этот код:
<script type="text/javascript">
var region_center = new Ext.Panel({
id: 'region_center',
region: 'center',
renderTo: '#region_center .x-panel-body',
margins:'10 10 10 10',
padding:'10 10 10 10',
autoScroll:true,
html: 'this is from ExtJS...'
});
</script>
... пытается преобразовать полный компонент Panel в себя (т. Е. Конфигурация renderTo
указывает на панель с идентификатором 'region_center',которая сама панель).Это не имеет смысла и не будет работать.Вы можете визуализировать компоненты только на существующем узле DOM - в этом примере не существует существующего узла DOM с идентификатором 'region_center', потому что панель еще не (и не может быть) отображена.
Эквивалентный код длясделать в точности то, что вы делаете в jQuery, было бы так:
<script type="text/javascript">
Ext.get('#region_center').child('.x-panel-body').update('this is from Ext...');
</script>
Предполагая, что при DOM все вещи равны в DOM, он должен выполняться точно так же, как ваш код jQuery.
Теперь, предполагая, что ваш BorderLayout правильно отрисован, и на самом деле он имеет центральную область с идентификатором 'region_center', вы сможете динамически добавлять в него новую панель (убедитесь, что идентификатор новой панели уникален).Обратите внимание, что для этого было бы предпочтительнее использовать API-интерфейс компонента (а не DOM-API), поскольку в этом случае для вас будет использоваться макет.Например, вы хотите сделать что-то вроде:
// assuming myCenterPanel is a valid *component* ref (NOT a DOM element):
myCenterPanel.add(new Ext.Panel(...));
myCenterPanel.doLayout();
Вы также хотели бы убедиться, что центральной панели назначен соответствующий макет (через конфигурацию макета).Если вместо этого вы просто визуализируете новую панель непосредственно в базовый узел DOM (как вы пытаетесь это сделать выше), она может работать , но в долгосрочной перспективе, вероятно, вызовет другие проблемы (опять же, посколькув этом случае вы обходите менеджер компоновки Ext).