vue简单实现拖拽添加数据

拖拽事件和属性

标记 这个很重要!!! 这个决定了拖拽事件的行为。当点击开始拖拽之后,鼠标点击所在的位置就是标记。
dragstart:当单击下鼠标,并移动之后执行。

drag:在dragstart执行之后,鼠标在移动时连续触发。

dragend:当拖拽行为结束,也就是松开鼠标的时候触发。

dragenter:当正在拖拽的元素的标记进入某个Dom元素时触发,自身首先会触发。被进入的Dom元素会触发这个事件。

dragover:当拖拽的元素的标记在进入的Dom元素上移动时触发,在自身移动时也会触发。

dragleave:当拖拽的元素在离开进入的Dom时触发。

H5拖拽属性

draggable:当需要某个元素可以拖拽时,需设置为true,默认为false。选中的文本、图片、链接默认可以拖拽。

DataTransfer对象:该属性用于保存拖放的数据和交互信息,该组件没有使用到,暂忽略。

常规

只需要监听三个事件dragstart、dragenter、dragend。需要知道开始拖拽时的元素是谁,拖拽后去往的元素是哪个,以及最后拖拽的结束。

打破常规

vue简单实现拖拽添加数据_第1张图片

@dragenter.prevent @dragover.prevent
// 阻止浏览器默认行为,不然会显示一个叉叉,不好看

  • 阻止默认行为

@dragleave.stop=“dragleave($event, ‘main’)”

  • 进入离开当前元素都会触发

@dragend.stop=“dragEnd($event, item)”

  • 放下拖拽内容触发

vue简单实现拖拽添加数据_第2张图片
vue简单实现拖拽添加数据_第3张图片
vue简单实现拖拽添加数据_第4张图片

	<a-col  :sm="24" :md="12" :xl="6"  class="draggable"  @dragleave.stop="dragleave($event, 'main')">
          <div class="label-head">
                <a-checkbox @change="onAllChange($event,'main')" :checked="checkAllMain">
                   全选
                </a-checkbox>
            </div>
           <div class="drag-center">
            <div  @dragenter.prevent @dragover.prevent v-for="(item,index) in draggableMain" :key="index" :draggable="true" class="drag-card __drag_item"
            @dragend.stop="dragEnd($event, item)">
                <label>
                    <a-checkbox @change="onChange($event,'main',item,index)" :checked="item.check">
                        {{item.name}}
                    </a-checkbox>
                </label>
                <div @click="plusEvent(item)"><a-icon type="plus" /></div>
                <!-- <div style="height:100px">
                {{item.name}}----{{index}}
                </div> -->
            </div>
           </div>
      </a-col>

完成交互
交换Dom位置时,左右有个10%的晃动吧~


这就是Vue的特性:数据驱动视图

你可能感兴趣的:(javascript,vue)