当我加载保存的布局时,如果布局的高度大于页面上已加载的 $('.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);
};