當我加載保存的佈局時,如果佈局的高度大於$('。grid- stack')。attr('data-gs-current-height'),y軸的元素在頁面的頂部位置處超過該加載。他們的y軸標籤在DOM中正確反映。GridStack並沒有在頁面上正確定位元素,當它們碰到特定的y軸點時
如果文檔的高度沒有改變,它會按預期工作。僅當新加載的小部件的組合高度高於加載的文檔時纔會發生這種情況。 ('.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);
};