Dragula - 在 dragula 掉落事件中传递 class

Dragula - passing class on dragula drop event

所以我有一个可拖动到多列的对象,我需要这样做,以便在它被拖放时,该对象中的一个变量会根据它所在的列进行更新,因为另一个对象会操纵该变量进行显示。我一直无法从标签中获取 (ondrop) 事件,并且 dragula 事件侦听器的值没有向我传递任何允许我获取对象的信息。无论如何强制事件侦听器传递对象而不是 html 标签?还是我缺少某些方法?

我找到的唯一解决方案(除了使用不同的拖放模块之外)是在用户关闭页面或转到其他内容时保存订单。或者由于 drop 事件是可捕获的,但似乎无法提供 class 对象,您仍然可以检测何时发生更改并让它更新所有内容,但这不是最好的解决方法因为它比更新一个变量对系统资源的负担要大得多。

我认为你可以在 drop 上更新数据。我是这样做的:

var drake = dragula({...});

function updateMyObject(elementId, listId) {
  // update the object here, for example:
  if (listId === 'firstList') {
    // use the element id to find the item in your object and update it
    myDataObject.filter(function(x) {
      return x.id === elementId;
    })[0].propertyToUpdate = listId;
  }
}

drake.on('drop', function(el, target, source, sibling) {
  var elementId = el.id;
  updateMyObject(el.id, target.id);
});

这支笔可能会有所帮助。我将 Dragula 与 Angular.js 混合用于数据建模。该事件需要在删除时更新数据模型。 http://codepen.io/chris22smith/pen/37459a002cbe6b6cd37aa5e927698fba

将 order # 作为元素中的属性传递,以便在 drake.on 函数中访问它。使用 oder# 和 ID,您应该能够弄清楚如何处理它并在后端进行正确的更新。