我正在尝试使用gridster.js和jquery-cookie来存储布局并使以下实现正常工作。它显示了json,我想让它默认/显示我的html内容。
我确信解决方案简单/优雅,但我是json和gridster的新手。 我相信我只需编辑“if($ .cookie(”grid-data“)== null){ var json = ...“
我知道我可以更改值,大小,但我想知道如何将我的html内容放入。
希望有人能引导我朝着正确的方向前进。这是我到目前为止所做的。
<section class="demo">
<div id="main" class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="2" data-sizey="1">My Content</li>
<li data-row="3" data-col="1" data-sizex="1" data-sizey="1">Some text</li>
<li data-row="3" data-col="2" data-sizex="2" data-sizey="1">Maybe an image and text</li>
<li data-row="1" data-col="2" data-sizex="2" data-sizey="2">Maybe an image</li>
<li data-row="1" data-col="4" data-sizex="1" data-sizey="1">More Content</li>
<li data-row="2" data-col="4" data-sizex="2" data-sizey="1"></li>
<li data-row="3" data-col="4" data-sizex="1" data-sizey="1"></li>
<li data-row="1" data-col="5" data-sizex="1" data-sizey="1"></li>
<li data-row="3" data-col="5" data-sizex="1" data-sizey="1"></li>
<li data-row="1" data-col="6" data-sizex="1" data-sizey="1"></li>
<li data-row="2" data-col="6" data-sizex="1" data-sizey="2"></li>
</ul>
</div>
</section>
<script>
var gridster;
$(function ()
{
$('<div id="main" class="gridster"></div>').appendTo('section');
if ($.cookie("grid-data") == null) {
var json = [{
"id": "foo",
"html": "<h3>My Content<\/h3>", //testing this failed
"col": 1,
"row": 1,
"size_y": 2,
"size_x": 3
}, {
"id": "bar",
"col": 4,
"row": 1,
"size_y": 2,
"size_x": 2
},
{
"id": "tar",
"col": 6,
"row": 1,
"size_y": 2,
"size_x": 2
},
{
"id": "boo",
"col": 1,
"row": 3,
"size_y": 2,
"size_x": 3
}, {
"id": "aar",
"col": 4,
"row": 3,
"size_y": 2,
"size_x": 2
},
{
"id": "dar",
"col": 6,
"row": 3,
"size_y": 2,
"size_x": 2
}
];
}
else
{
var json = JSON.parse($.cookie("grid-data"));
}
var grid = $("#main").gridster({
draggable: {
stop: function(event, ui){
$.cookie("grid-data", JSON.stringify(grid.serialize()));
}
},
widget_margins: [10, 10],
widget_base_dimensions: [140, 140],
max_size_y: 3,
serialize_params: function ($w, wgd) {
return {
id: wgd.el[0].id,
html: wgd.html,
col: wgd.col,
row: wgd.row,
size_y: wgd.size_y,
size_x: wgd.size_x
}
}
}).data('gridster');
for (i = 0; i < json.length; i++) {
grid.add_widget(
'<div id="' + json[i]['id'] + '"></div>',
json[i]['size_x'],
json[i]['size_y'],
json[i]['html'],
json[i]['col'],
json[i]['row']);
}
});
</script>
答案 0 :(得分:0)
您必须要求动态添加页面数据,因此必须使用此
var grid = $("#main").gridster();//grid will be holding the reference of gridster object
grid.add_widget('<li class="new"><h1>The HTML of the widget...</h1></li>', 2, 1);
//grid.add_widget( html, [size_x], [size_y], [col], [row] )
就像你和你一样使用json数组,然后用这样的add_widget迭代if
for(var index=0;index<json.length;index++) {
grid.add_widget('<li class="new" id="'+json[index].id+'">'+json[index].html+'</li>',json[index].size_x,json[index].size_y,json[index].col,json[index].row);
}