На моей странице есть dijit.layout.AccordionContainer, который определен в html и создан, когда dojo анализирует страницу при загрузке.
Затем, когда пользователь взаимодействует со страницей, я использую Ajax для извлечения данных и программного наполнения контейнера (сначала удаляя существующие элементы).
Чтобы проиллюстрировать мою проблему, вот код, который не работает:
function doit() {
var accordion = dijit.byId("accordionShell");
accordion.getChildren().each(function(item) {
accordion.removeChild(item);
});
for (i = 1; i < 5; i++) {
var d = new dijit.layout.AccordionPane({title:'hello', content:'world'});
accordion.addChild(d);
}
}
Это невозможно, потому что виден только первый элемент в аккордеоне. Я думаю, что другие действительно существуют, но они не видны, поэтому вы ничего не можете сделать.
Мне удалось обойти это:
- Всегда следите за тем, чтобы в аккордеоне был 1 элемент (поэтому я никогда не удаляю первого ребенка)
- Вызвать accordian.layout () после изменения содержимого
Итак, этот код «работает» до тех пор, пока вы всегда хотите видеть первый элемент, и на самом деле не расширяете ничего, кроме первого:
function doit() {
var accordion = dijit.byId("accordionShell");
var i = 0;
accordion.getChildren().each(function(item) {
if (i > 0) accordion.removeChild(item);
i++;
});
for (i = 1; i < 5; i++) {
var d = new dijit.layout.AccordionPane({title:'hello', content:'world'});
accordion.addChild(d);
}
accordion.layout();
}
Я использую Dojo 1.2.0 - Кто-нибудь знает, что я делаю неправильно?