【问题标题】:dijit/layout/ContentPane on resize end?dijit/layout/ContentPane 调整大小结束?
【发布时间】:2013-06-15 12:12:46
【问题描述】:

我现在使用的是 dojo 1.8.3,现在我的页面上有一个带有 2 个 ContentPane 的 BorderContainer。我想听resize事件,代码是这样的

dojo.ready(function(){
    dojo.connect(dijit.byId("Container"), "resize", function(changeSize, resultSize){
        // do my stuff here...
    });
});

但是,如果调整大小(拆分)结束,是否有任何通知我?请指教,谢谢!

【问题讨论】:

    标签: dojo dijit.layout


    【解决方案1】:

    首先,我建议您使用"modern dojo",因为无论如何您都在使用dojo 1.8。 dojo/connect 已弃用,现在“监视”函数调用的方法是使用 dojo/aspect

    所以你最终会得到类似的东西:

    require(["dojo/ready", "dojo/aspect", "dijit/registry"], function(ready, aspect, registry) {
        ready(function() {
            aspect.after(registry.byId("Container"), "resize", function() {
                // do something after resize has been called...
            });
        });
    });
    

    如果您想访问已传递给 resize 函数的参数,请在最后一个参数为 true 的情况下调用 aspect.after,如下所示:

    aspect.after(registry.byId("Container"), "resize", function(changeSize, resultSize) {
        // do something with changeSize and resultSize after resize has been called...
    }, true);
    

    【讨论】:

    • 感谢James的回复,但是,有没有可能像“onResizeEnd”这样的事件来监听? aspect.after(registry.byId("mapContainer"), "resize", function() {} 拖动分割条会触发。
    • 请纠正我,但我不认为有类似“resizeEnd”事件。你到底想做什么?当边界容器布局了它的孩子时得到一个“事件”?在这种情况下,您可能需要在“_layoutChildren”方法上设置 after() 方面。
    • 实际上,我在左侧有一个内容窗格,另一个在右侧,我在左侧内容窗格上放置了一个 iframe 和一个 div“splitOverlay”。在向左拖动拆分器的过程中,如果鼠标悬停在iframe上,我发现是否释放鼠标左键,拆分器仍处于拖动状态。最后,这段代码工作:dojo.ready(function(){ dojo.connect(dijit.byId("left_content_pane"), "resize", function(changeSize, resultSize){ dojo.setStyle(dojo.byId("splitOverlay"),"display","block"); }); }); 但是我无法隐藏 splitOverlay
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2012-06-05
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多