コンテンツペインへの「移行」を防ぐカスタムdojoウィジェットを作成しようとしています。スライドするのではなく、ペインを別のページにリンクさせようとしています。
属性doExpand="false"の例を使用して、このオプションを指定します。
<div id="menu">
<div dojoType="AccordionMenu" doLayout="true" class="tundra" style="height: 300px">
<div dojoType="AccordionPane" doExpand="false" title="<p>Home</p>"></div>
<div dojoType="AccordionPane" selected="true" title="<p>Tasks 1</p>">
<ul class="nav">
<li><a href="#">Task 1</a></li>
<li><a href="#">Task 2</a></li>
<li><a href="#">Task 3</a></li>
</ul>
</div>
<div dojoType="AccordionPane" title="<p>Tasks 2</p>">
<ul class="nav">
<li><a href="#">Task 1</a></li>
<li><a href="#">Task 2</a></li>
<li><a href="#">Task 3</a></li>
</ul>
</div>
</div>
</div>
カスタムウィジェットを次のように設定しました。
<script>
dojo.require("dojo.parser");
dojo.require("dijit.Menu");
dojo.require("dijit.MenuSeparator");
dojo.require("dijit.MenuItem");
dojo.require("dijit.PopupMenuItem");
dojo.require("dijit.layout.AccordionContainer");
dojo.ready(function(){
console.log('AccordionMenu loading');
dojo.declare("AccordionMenu",
[dijit.layout.AccordionContainer],
{
postMixInProperties: function(){
console.log('AccordionMenu postMixInProperties');
},
_transition: function(/*dijit._Widget?*/ newWidget, /*dijit._Widget?*/ oldWidget, /*Boolean*/ animate){
if (newWidget.doExpand == true){
this.inherited(arguments);
};
}
});
console.log('AccordionPane loading done');
dojo.declare("AccordionPane",
[dijit.layout.ContentPane],
{
doExpand: true,
postMixInProperties: function(){
console.log('AccordionPane postMixInProperties');
}
});
console.log('AccordionPane loading done');
});
dojo.addOnLoad( function(){
console.log('parse menu');
dojo.parser.parse("menu");
});
</script>
これは多少機能しますが、別のContentPaneをクリックしても、前のContentPaneは折りたたまれません。これを行うにはおそらくもっと良い方法があります。
これが実際の例です-http://jsfiddle.net/qPqhK/15/