vuedragable

626 阅读2分钟

demo: sortablejs.github.io/Vue.Draggab…

var defaults = {

 group: Math.random(), 
 //产生一个随机数 
 //改参数是对象有三个两个参数 
 pull: 拉,
 put:放 默认都是是true 
 pull还有一个值是: 'clone', 
 pull: 拉,
 put:放 设置为false 就不能拖拽了, 
 如果 pull 这种为'clone'则可以从一个列表中拖拽到另一个列表并且克隆dom节点,
 name:是两个或者多个列表拖拽之间的通信,两个或者三个列表的nea

 sort: true, // 类型:Boolean,值为false时,在自己的拖拽区域不能拖拽,但是可以拖拽到其他区域,true则可以做自己区域拖拽或者其他区域拖拽

 disabled: false, //类型:Boolean 是否禁用拖拽 true 则不能拖拽 默认是true

 store: null, // 用来html5 存储的 改返回 拖拽的节点的唯一id

 handle: null, //handle 这个参数是设置该标签,或者该class可以拖拽 但是不要设置 id的节点和子节点相同的tag不然会有bug

 scroll: true, //类型:Boolean,设置拖拽的时候滚动条是否智能滚动。默认为真,则智能滚动,false则不智能滚动

 scrollSensitivity: 30, //滚动的灵敏度,其实是拖拽离滚动边界的距离触发事件的距离边界+-30px的地方触发拖拽滚动事件,

 scrollSpeed: 10, //滚动速度

 draggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',//draggable 判断拖拽节点的父层是否是ou ul

 ghostClass: 'sortable-ghost', // 排序镜像class,就是当鼠标拉起拖拽节点的时候添加该class

 chosenClass: 'sortable-chosen', // //为拖拽的节点添加一个class 开始拖拽鼠标按下去的时候 添加该class

 ignore: 'a, img', //a 或者是img

 filter: null, //改参数可以传递一个函数,或者字符串,字符串可以是class或者tag,然后用于触发oFilter函数,这样可以用来自定义事件等

 animation: 0, //拖拽动画时间戳

 setData: function (dataTransfer, dragEl) { //设置拖拽传递的参数

 dataTransfer.setData('Text', dragEl.textContent);

 },

 dropBubble: false, // 发生 drop事件 拖拽的时候是否阻止事件冒泡

 dragoverBubble: false, //发生 dragover 事件 拖拽的时候是否阻止事件冒泡

 dataIdAttr: 'data-id', //拖拽元素的id 数组

 delay: 0, //延迟拖拽时间, 其实就是鼠标按下去拖拽延迟

 forceFallback: false, // 不详

 fallbackClass: 'sortable-fallback', // 排序回退class

 fallbackOnBody: false,// 是否把拖拽镜像节点ghostEl放到body上

 };

我的配置

 <draggable
               tag="ul"
               :list="eleOuter"
               v-bind="{
                 group: { name: 'people', pull: 'clone', put: false },
                 filter: '.disabled',
                 sort: false,
                 ghostClass: 'ghost'
               }"
               @end="handleMoveEnd"
               @start="handleMoveStart"
               :move="handleMove"
             >
               <li
                 class="form-edit-widget-label"
                 :class="{ 'no-put': item.type == 'divider', disabled: Object.keys(widgetFields).includes(item.fid) }"
                 v-for="(item, index) in eleOuter"
                 :key="index"
               >
                 <a>
                   <img class="icon iconfont field-icon" :src="item.icon" />
                   <span>{{ item.name }}</span>
                 </a>
               </li>
             </draggable>