我正在使用Gridster.js和JQuery来设计一个小部件容器。所以我想使用Gridster.js的serialized_params属性来保存添加的小部件的一些其他属性(所有者和公司)。我尝试如下,但它没有看到我添加的数据属性。
注意:( size_x和size_y属性工作正确。)
请告诉我该怎么做?
function addWidget() {
$(".gridster ul").gridster({
widget_margins : [ 10, 10 ],
widget_base_dimensions : [ 140, 140 ],
serialize_params : function($w, wgd) {
return {
id : $w.attr('id'),
col : wgd.col,
row : wgd.row,
size_x : wgd.size_x,
size_y : wgd.size_y,
classes : $w.attr('class'),
styles : $w.attr('style'),
owner : wgd.owner,
company :wgd.company
};
}
});
var gridster = $(".gridster ul").gridster().data('gridster');
var widgetHtml = '<li class= "orange" data-row="2" data-col="6" data-sizex="1" data-sizey="2" data-owner="omertasci" data-company="XYZ">'
+ '<i class="fa fa-times"></i>'
+ '<h1 style="padding-top: 0em ! important;">New Widget</h1>'
+ '<script> '
+ '$(function() { $(".fa-times").on("click", function() { var indexOfLi = $(this).parent().index(); removeWidget(indexOfLi);} ); });'
+ '</script>' + '</li>';
gridster.add_widget(widgetHtml, 2, 1);
serializedGridster = gridster.serialize();
}
序列化小部件的结果:
{classes:"orange gs-w"
col:5
id:undefined
row:1
size_x:2
size_y:1
styles:"display: list-item; opacity: 0;"}
答案 0 :(得分:0)
我通过实现自己的序列化功能克服了这个问题。
function serializeGridster() {
var serializeJsonArr = new Array();
$(".gridster ul li").each(function(i) {
var serializeJson = {};
var id = $(this).attr('id');
var classes = $(this).attr('class');
var style = $(this).attr('style');
var owner= $(this).attr('data-owner');
var company= $(this).attr('data-company');
var row = $(this).attr('data-row');
var col = $(this).attr('data-col');
var sizex = $(this).attr('data-sizex');
var sizey = $(this).attr('data-sizey');
serializeJson["id"] = id;
serializeJson["classes"] = classes;
serializeJson["style"] = style;
serializeJson["owner"] = owner;
serializeJson["company"] = company;
serializeJson["row"] = row;
serializeJson["col"] = col;
serializeJson["sizex"] = sizex;
serializeJson["sizey"] = sizey;
serializeJsonArr.push(serializeJson);
});
// console.log(serializeJsonArr);
return serializeJsonArr;
}
答案 1 :(得分:0)
解决方案是jQuery data()
方法:
$(".gridster ul").gridster({
widget_margins : [ 10, 10 ],
widget_base_dimensions : [ 140, 140 ],
serialize_params : function($w, wgd) {
var data = jQuery.extend({}, $w.data());
//This will make a _copy_ of *all* data- key-value pairs, including your own.
delete data.coords;
//If we don't remove the coords key, we will fall foul of a circular reference
return data;
//This will return an array with all the values. The key names will not be formatted.
}
});
答案 2 :(得分:0)
我遇到了一些问题,我是这样解决的
在 li
<li data-sizey="10" data-sizex="5" data-col="1" data-row="1" id="55" owner="Minhaj" company="google">
你可以在序列化函数中使用它
serialize_params: function ($w, wgd) {
var class = $w.attr('class');
var style = $w.attr('style');
var owner = $w.attr('owner');
var company = $w.attr('company');
return {
id: $w.prop('id'),
row : wgd.row,
size_x : wgd.size_x,
size_y : wgd.size_y,
classes : class,
styles : style,
owner : owner,
company :company
};
},