Javascript Gridstack-如果我在重新初始化之前销毁网格,则后者将失败 代码

Javascript Gridstack-如果我在重新初始化之前销毁网格,则后者将失败 代码,javascript,gridstack,Javascript,Gridstack,注意:此处发布的所有函数都位于同一个文件interface.js中 我添加了一个事件侦听器,每次调整窗口大小时都会执行该侦听器: window.addEventListener("resize", function(_resize){ _window_resize_handler(_resize); } ); 当事件调整大小发生时,处理程序函数\u window\u resize\u handler()确定(a)窗口是否足够宽,以及(b)是否

注意:此处发布的所有函数都位于同一个文件
interface.js

我添加了一个事件侦听器,每次调整窗口大小时都会执行该侦听器:

window.addEventListener("resize",
    function(_resize){
        _window_resize_handler(_resize);
    }
);
当事件
调整大小
发生时,处理程序函数
\u window\u resize\u handler()
确定(a)窗口是否足够宽,以及(b)是否在移动/桌面上。基于此,它调用两个Gridstack.js初始化函数之一(一个用于桌面,一个用于移动):

对于移动设备:

function _gridstack_init_desktop(){

    // Create global object "grid" with window.
    window.grid = GridStack.init({
        acceptWidgets: false,                         
        alwaysShowResizeHandle: true,               
        animate: false,                               
        auto: true,                       
        // cellHeight: "15.45rem", 
        // column: 12,                               
        disableDrag: false,                          
        disableOneColumnMode: true, 
        disableResize: false,                        
        draggable: true,                  
        dragOut: false,                   
        float: true,                      
        handle: '.grid-stack-item-content',
        handleClass: 'grid-stack-item-content',
        itemClass: 'grid-stack-item',          
        maxRow: 6,                             
        minRow: 6,                             
        minWidth: 768,                         
        oneColumnDomSort: false,               
        placeholderClass: 'grid-stack-placeholder', 
        placeholderText: '',                        
        resizable: {                                
            autoHide: false,
            handles: 'n, nw, w, sw, s, se, e, ne'
        },
        removeable: false,                          
        removeTimeout: 2000,                        
        //row: 6,                                   
        rtl: false,                    
        staticGrid: false,             
    });

    grid.column(12);
    grid.cellHeight("15.45rem");


}
function _gridstack_init_mobile(){

    // Create global object "grid" with window.
    window.grid = GridStack.init({
        acceptWidgets: false, 
        alwaysShowResizeHandle: true,
        animate: false,                               
        auto: true,                                  
        // cellHeight: "15.45rem",                   
        // column: 12,                              
        disableDrag: false,                         
        disableOneColumnMode: false,                
        disableResize: false,                      
        draggable: true,                            
        dragOut: false,                               
        float: true,                                  
        handle: '.grid-stack-item-content',          
        handleClass: 'grid-stack-item-content',       
        itemClass: 'grid-stack-item',                
        maxRow: 72,                                   
        minRow: 6,                                    
        minWidth: 768,                                
        oneColumnDomSort: false,                      
        placeholderClass: 'grid-stack-placeholder',   
        placeholderText: '',                          
        resizable: {                                  
            autoHide: false,
            handles: 'n, nw, w, sw, s, se, e, ne'
        },
        removeable: false,                            
        removeTimeout: 2000,                          
        //row: 6,                       
        rtl: false,            
        staticGrid: false,     
        verticalMargin: "0",   
    });

    grid.column(1);
    grid.cellHeight("47.15vh");

}

结果 这部分是可行的,但只有在Chrome开发工具中,我在所有触发
\u gridstack\u init\u mobile()
的屏幕之间进行调整时,它才起作用。这些主要是手机屏幕:

当我选择触发
\u gridstack\u init\u desktop()
的iPad屏幕时,初始化过程中出现了一些问题,我得到的是1列而不是12列(左图)。但如果我刷新了所有内容,并且得到了12列(右图):


我的猜测 我的推测是,我需要销毁
grid
对象(如果存在),然后再将其重新初始化为Gridstack对象。这就是为什么我试图将这部分代码放在
\u gridstack\u init\u mobile()
\u gridstack\u init\u mobile()
的顶部:

但我有一个错误:

interface.js:372 Uncaught ReferenceError: grid is not defined
    at _gridstack_init_desktop (interface.js:372)
    at _window_resize_handler (interface.js:359)
    at interface.js:8

有人知道吗?

如果只需要更改列号,为什么要销毁?(其中有一个API)
removeAll(removeDOM=true)
否则会删除网格堆栈信息。 即使没有api
grid.opts.maxRow=72
,您也可以更改任何属性,只是在下一个操作发生之前,如果需要更改,您不会执行任何代码


如果库中有一个bug,你应该创建一个最小的可复制案例,并将其作为bug发布,而不是期望有人读取你的堆栈溢出Q。。。你也没有说出你的rev使用的是什么。试试2.0.0,一眼就可以看出您使用了12列,但网格最初只有一列,而且您不能多次初始化同一个网格,但您可以设置列(1),删除dom元素会破坏所有内容,甚至不会显示dom的开头。也不要使用世界上的选项初始化,只有非默认选项(否则很难阅读)。

感谢您提供的信息。首先初始化Gridstack对象
grid
,然后执行
grid.opts.maxRow=72但网格不变。我正在使用Gridstack 1.2.2。
if (document.getElementsByClassName('grid-stack').length != 0){
    grid.destroy();
}
interface.js:372 Uncaught ReferenceError: grid is not defined
    at _gridstack_init_desktop (interface.js:372)
    at _window_resize_handler (interface.js:359)
    at interface.js:8