По сути, у меня есть окно, содержащее панель форм с элементами, которые используются в нескольких местах. Это означает, что элементы formPanel могут незначительно отличаться. (тип органов управления).
Мне удалось динамически очистить и добавить пользовательские кнопки для соответствующей ситуации в окне.
Но у меня возникла небольшая проблема с элементами formPanel.
Заглянув в источник, я обнаружил, что в методе init.Component Ext.Container есть небольшой фрагмент кода:
var items = this.items;
if(items){
delete this.items;
if(Ext.isArray(items)){
this.add.apply(this, items);
}else{
this.add(items);
}
}
Это похоже на то, чего я пытаюсь достичь.
Удаление всех текущих элементов и последующий вызов метода formPanel.add снова вызовут этот код:
if(!this.items){
this.initItems();
}
Здесь все в порядке. И начальная загрузка формы работает отлично.
Хотя, когда я скрываю окно и открываю его снова, очистка / перезагрузка элементов отлично работает на моем компоненте, но предыдущие дочерние узлы / элементы все еще присутствуют в dom.children и dom.innerHTML.
Таким образом, моя formPanel теперь отображает два или более наборов элементов управления, которые не имеют никаких значений, и недавно загруженные элементы управления внизу с действительными значениями.
Я вызываю formPanel.doLayout () после очистки / добавления элементов.
Я также пытался вызвать метод formPanel.remove для каждого элемента, находящегося в данный момент в formPanel, но я по-прежнему получаю отображение дубликатов, и компоновка не выглядит должным образом закрепленной / привязанной, так как в итоге получается горизонтальная полоса прокрутки под каждым элементом.
Что еще я могу сделать, чтобы очистить / перезагрузить dom.children и dom.innerHTML?
Любая помощь будет принята с благодарностью.
Я использую ExtJS 2.1, если это имеет какое-либо значение.