我遇到了这个问题。
当我更改窗口小部件的位置时,例如拖动两个窗口小部件。 使用事件“更改”来获取这些更新的小部件。 我确实检查了改变的位置。
if (stack_item.data('gs-x') != items[i].x || stack_item.data('gs-y') != items[i].y) {
我重新加载页面。更改窗口小部件的位置,没有任何反应。然后再次更改相同小部件的位置并保存。
为什么呢?如何保存实际改变的坐标?
$(document).on('change', '.grid-stack', function(event, items) {
var updated_widgets = {};
for (var i = 0; i < items.length; i++) {
var widget = items[i].el.find('.dashboard-widget');
var stack_item = widget.parent();
// Let's see if cordinates actually changed
// (this change event reports changes even when nothing changed)
if (stack_item.data('gs-x') != items[i].x || stack_item.data('gs-y') != items[i].y) {
updated_widgets[widget.data('widget-id')] = {
'x': items[i].x,
'y': items[i].y
}
}
}
if (Object.keys(updated_widgets).length > 0) {
$.post('/dashboard_widgets/update_positions', {
'_method': 'patch',
'updated_widgets': updated_widgets
});
}
});