【问题标题】:Dragula - passing class on dragula drop eventDragula - 在 Dragula 放置事件中传递类
【发布时间】:2016-08-25 12:27:22
【问题描述】:

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

【问题讨论】:

    标签: php html typescript draggable dragula


    【解决方案1】:

    我认为您可以在 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 混合用于数据建模。该事件需要在 drop 时更新数据模型。 http://codepen.io/chris22smith/pen/37459a002cbe6b6cd37aa5e927698fba

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 您能否发布示例代码片段以供将来参考/查看者使用?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多