首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript网格堆栈框架延迟加载

javascript网格堆栈框架延迟加载
EN

Stack Overflow用户
提问于 2017-01-10 06:36:42
回答 2查看 404关注 0票数 1

为什么我想使用网格堆栈来创建一个带有小窗口的页面。我的问题是,当我“懒惰”加载widgeds时,gridstack不会初始化这个新的dom节点。(它们不能移动)有人能给我解释一下我怎么做对吗?我想我的问题是$('.grid-stack').gridstack(options);只执行一次,就像我在这里看到的:https://github.com/troolee/gridstack.js/blob/master/src/gridstack.js#L1727

或者,是否有一个框架已经意识到了“惰性”加载。

index.html:

代码语言:javascript
复制
<div class="grid-stack" id="widgeds">
    <div class="grid-stack-item ui-draggable ui-resizable ui-resizable-autohide ui-resizable-disabled"
        data-gs-x="0" data-gs-y="0"
        data-gs-width="1" data-gs-height="1">
            <div class="grid-stack-item-content ui-draggable-handle">Item 1</div>
    </div>
    <div class="grid-stack-item"
        data-gs-x="1" data-gs-y="0"
        data-gs-width="1" data-gs-height="1">
            <div class="grid-stack-item-content">Item 2</div>
    </div>
</div>
<script type="text/javascript">
        var girdstackRefresh = function() {
            var options = {
                cell_height: 200,
                vertical_margin: 10
            };
            $('.grid-stack').gridstack(options);
        }
        $(function () {
            girdstackRefresh();

            loadWidged('/widgeds/chat', function() {
                girdstackRefresh();
            });

        });
//function for lazy loading:
var widgeds = {};
function loadWidged(srcUrl, onloaded) {
    $.get(srcUrl+"/meta.wjs", function(meta) {
        code = "var foo = function() { return "+meta+"; }\nfoo();";
        widged = eval(code);
        if(widged.singleton) {
            if(widgeds[widged.uid]) {
                throw({'message' : 'Error widged can only be loaded once'});
            }
        }
        widged.url = srcUrl;
        widged.init.bind(widged);
        var ui = $('<div class="grid-stack-item ui-draggable ui-resizable ui-resizable-autohide ui-resizable-disabled" data-gs-x="5" data-gs-y="1" data-gs-width="4" data-gs-height="2">')
        $("#widgeds").append(ui);
        widged.dom = ui;
        widged.init();
        widgeds[widged.uid] = widged;
        onloaded();
    });
}
        </script>

加宽的示例:

chat/meta.wjs:

代码语言:javascript
复制
{
    "uid"       : "SockIoChat",
    "singleton" : true,
    "init"      : function() {
        console.log("debug:");
        console.log(this.url);
//        $.loadCSS('style.css');
        this.dom.load(this.url+"/chat.html")
    }
}

chat/chat.html:

代码语言:javascript
复制
<div class="grid-stack-item-content ui-draggable-handle">Item 2</div>
EN

回答 2

Stack Overflow用户

发布于 2017-04-26 18:26:40

只需在完成延迟加载后将其作为回调或其他方式加载,或者使用setTimeout函数来初始化它。

票数 0
EN

Stack Overflow用户

发布于 2017-05-05 04:16:53

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41558141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档