У меня есть 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);
}
}
Это терпит неудачу, потому что только первый элемент в Accordian виден. Я думаю, что другие на самом деле существуют, но они не видны, поэтому вы ничего не можете сделать.
я сумел обойти это:
- Всегда есть обеспечение 1 пункт в Accordian (так что я никогда не удалить первый ребенок)
- Вызов 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 - Кто-нибудь знает, что я делаю неправильно?
Спасибо, но это ничего не изменило. Еще нужно оставить один элемент в гармонике. – prule