1

我遇到了这个问题。

当我更改小部件的位置时,例如拖动两个小部件。使用事件“更改”来获取这些更新的小部件。我确实检查了改变的位置。

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
    });
  }
});
4

0 回答 0