javascript - 在 GoldenLayout 中捕获 Pane 调整大小事件的正确方法

标签 javascript layout golden-layout

我想在发生调整大小事件(无论是调整 Pane 、整个浏览器还是缩放)时在一个 Pane (即容器内容项)中执行操作。下面的工作,但是......如果我然后在 Pane 中拖动,甚至从左到右,到右到左,或从上到下,它就会停止工作。

我假设重新排列 Pane 会重置某些内容,并且有一种正确 方法来获取持久事件处理程序。但我无法从文档中解决。

myLayout.on('initialised',initPanes);

function initPanes(){
myLayout.root.contentItems[0].contentItems[0].on('resize',function(){
    console.log("First pane resized");  //TEMP
    });
myLayout.root.contentItems[0].contentItems[1].on('resize',function(){
    console.log("Second pane resized");  //TEMP
    });
//...
}

最佳答案

很可能您将 resize 处理程序绑定(bind)到一些中间布局对象,例如 stackcolumn,这些可能会被销毁并重新当您重新安排布局时创建,在此过程中杀死您的听众。

你可以这样检查对象类型:

%myLayout.root.contentItems[0].contentItems[0].type
"stack"

您应该改为将“调整大小”监听器绑定(bind)到组件的容器:

myLayout.on('componentCreated',function(component) {
    component.container.on('resize',function() {
        console.log('component.resize',component.componentName);
    });
});

以防止它在您重新安排布局时被删除。

关于javascript - 在 GoldenLayout 中捕获 Pane 调整大小事件的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207028/

相关文章:

javascript - 如何将字符串转换为变量名

java - android:layout_below 与 ImageView 不工作

layout - JavaFX 2 中的 GroupBox/TitledBorder?

Magento 标识符位置 - 类似于 Joomla 中的 ?tp=1

angular - 黄金布局 Angular 2+/ng-golden-layout

javascript - Golden Layout + Angular2 RC5 - 无法使用 ViewContainerRef 动态创建组件

javascript - 'exit' 是 JavaScript 中普遍支持的停止执行的方法吗?

c# - 在 JavaScript 中获取元素

javascript - 如何创建一个持久的 javascript,当内容通过 ajax 不断更新时它会更新?