保存されたレイアウトを読み込んでいるときに、レイアウトの高さが$( '。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);
};