0

当我加载保存的布局时,如果布局的高度大于页面上已加载的 $('.grid-stack').attr('data-gs-current-height'),则元素与一个 y 轴,它在页面的顶部位置越过该负载。它们的 y 轴标签正确反映在 DOM 中。

如果文档的高度没有改变,它会按预期工作。这只发生在新加载的小部件的组合高度大于它们正在加载的文档时。

在加载小部件之前,我使用以下代码更改了 ('.grid-stack').attr('data-gs-current-height') 值和元素值的高度,但它们仍然呈现尽管 data-gs-current-height 确实显示它在将小部件加载到 DOM 中的新值之前已经更新,但它们彼此堆叠在一起。

我用于更改网格堆栈高度的代码是:

var changeGridStackHeight = function(gridStackHeight, docHeight, json){
        $('.grid-stack').attr("data-gs-current-height", gridStackHeight);
        $('.grid-stack').css('height', docHeight);
        loadUserTemplate(json);
    };

和 loadUserTemplate(json) 是:

var loadUserTemplate = function(json){
        var firstArray = json[0];
        var parsed = (JSON.parse(firstArray));
        var gridStack = $('.grid-stack-item');
        var plength = parsed.length;

        gridStack.each(function(index){
            var count = 0;
            var gridstackId = $(this).attr('data-custom-id');
            for(var i=0; i < plength; i++){
                if($(this).attr('data-custom-id') === parsed[i].id){
                    $(this).attr('data-gs-x', parsed[i].x);
                    $(this).attr('data-gs-y', parsed[i].y);
                    $(this).attr('data-gs-width', parsed[i].width);
                    $(this).attr('data-gs-height', parsed[i].height);
                }
                var equals = Number(parsed[i].id) == Number(gridstackId);
                if(equals === true){
                    count++;
                }
            }
            if(count === 0){
                $(this).css('display', 'none');
            }
        });
        var reposition = window.setTimeout(function(){
            fixSizes();
        },1000);
    };
4

1 回答 1

0

我找到了一种解决我的特定问题的方法,尽管我不认为这是它打算修复的方式,因为它确实有与之相关的其他问题。如果将来有人有更适合的方式,请发布它,如果它有效,我会将您的答案标记为正确的方式。

我发现 gridstack 正在创建它自己的样式表,该样式表将 _max: 设置为我的网格加起来的任何高度。它遍历每个小部件并确定最终高度。gridstack.js 中有一行更新了 maxHeight。我在它的末尾添加了“105”,因为对于我的特定情况,它与我需要的一样大。那行代码现在看起来像这样:

self._updateStyles(maxHeight + 105);

它产生的问题是,当用户尝试更改已加载的网格时,它会将小部件放置在整个板上。我有可能做到这一点,因此无法调整小部件的大小或从保存的模板中移动,但同样,这不是插件的正确功能。

于 2016-09-20T16:48:06.193 回答