私のページにはdijit.layout.AccordionContainerがあり、これはhtmlで定義され、ロード時にdojoがページを解析するときに作成されます。プログラムによる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つの項目(私は最初の子を削除することはありません)
- 内容
ので、このコードは、限り、あなたは常に最初の項目を見てみたい、と実際に最初のものが、いずれも膨張しないよう、「働く」:
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を使用しています - 誰かが間違っていることを知っていますか?
おかげで、これは何も変更しませんでした。それでもアコーディアンに1つのアイテムを残す必要があります。 – prule