切换Dojo dijit的显示

Pro*_*777 5 javascript dojo

我试图在Dojo中实现div dijit的基本显示/隐藏.基于我曾经使用过的其他javascript框架,这应该很容易,但我发现它最多也很困难.

这是来自的代码

<script type="text/javascript">
dojo.require("dijit.form.Button");
dojo.require("dijit.layout.ContentPane");
dojo.require("dojo.fx");
var toggler = null;
function basicToggle() {
    toggler = new dojo.fx.Toggler({
        node: "panel",
        showFunc : dojo.fx.wipeIn,
        hideFunc : dojo.fx.wipeOut
    })
}
dojo.addOnLoad(basicToggle);
</script>
Run Code Online (Sandbox Code Playgroud)

下面是我体内的代码.

<button dojoType="dijit.form.Button">    
    <img src="wrapper/images/header-settings.png" border="0" />     
    <script type="dojo/method" event="onClick">   
        toggler[dijit.byId("panel").attr("displayed") ? 'show':'hide']();
    </script>
</button>   
<div id="panel" dojoType="dijit.layout.ContentPane" style="border: .2em dotted     #900;display: none">
This is a content pane.</div>
</body>
Run Code Online (Sandbox Code Playgroud)

我现在看到的行为是在点击按钮后暂时显示div,但之后再次隐藏.我究竟做错了什么?

pel*_*ler 5

我认为你有向后显示/隐藏逻辑?另外,我认为'显示'来自一个非常非常老的Dojo版本.尝试只看风格(请注意,当我检查'无'时,这会再次翻转逻辑)

toggler[(dojo.style("panel","display") == "none") ? 'show':'hide']();
Run Code Online (Sandbox Code Playgroud)

在docs中有一个使用dojo.connect来实现相同效果的示例.