0

コンテンツペインへの「移行」を防ぐカスタム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/

4

1 に答える 1

1

わかりました、答えが見つかりました - dijit.layout.StackContainer で selectChild メソッドをオーバーライドする必要がありました。oldWidget/newWidget 変数が _transition メソッドで順不同になっていました。

selectChild: function(page){
            console.log(page);

            if (page.doExpand == true){
                console.log('true')
                this.inherited(arguments)
            };


        }    

http://jsfiddle.net/KvXmR/1/

于 2012-04-30T14:06:31.417 に答える