首页 > 其他分享 >vue中draggable使用记录

vue中draggable使用记录

时间:2024-02-29 17:34:02浏览次数:19  
标签:vue group name 记录 拖动 list1 draggable true id

NPM或yarn安装方式

yarn add vuedraggable
npm i -S vuedraggable

UMD浏览器直接引用JS方式

<script src="https://www.itxst.com/package/vue/vue.min.js"></script>
<script src="https://www.itxst.com/package/sortable/Sortable.min.js"></script>
<script src="https://www.itxst.com/package/vuedraggable/vuedraggable.umd.min.js"></script>

属性说明

如果下面的属性说明未能完全看明白,请访问非vue版 sortable.js里面有更详细的例子。asfa

属性名称说明
group :group= "name",相同的组之间可以相互拖拽
或者 { name: "...", pull: [true, false, 'clone', array , function], put: [true, false, array , function] }
sort :sort= "true",是否开启内部排序,如果设置为false,它所在组无法排序,在其他组可以拖动排序
delay :delay= "0", 鼠标按下后多久可以拖拽
touchStartThreshold 鼠标移动多少px才能拖动元素
disabled :disabled= "true",是否启用拖拽组件
animation 拖动时的动画效果,还是很酷的,数字类型。如设置animation=1000表示1秒过渡动画效果
handle :handle=".mover" 只有当鼠标移动到css为mover类的元素上才能拖动
filter :filter=".unmover" 设置了unmover样式的元素不允许拖动
draggable :draggable=".item" 那些元素是可以被拖动的
ghostClass :ghostClass="ghostClass" 设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
chosenClass :ghostClass="hostClass" 被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dragClass :dragClass="dragClass"拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dataIdAttr dataIdAttr: 'data-id'
forceFallback 默认false,忽略HTML5的拖拽行为,因为h5里有个属性也是可以拖动,你要自定义ghostClass chosenClass dragClass样式时,建议forceFallback设置为true
fallbackClass 默认false,克隆的DOM元素的类名
allbackOnBody 默认false,克隆的元素添加到文档的body中
fallbackTolerance 拖拽之前应该移动的px
scroll 默认true,有滚动区域是否允许拖拽
scrollFn 滚动回调函数
scrollSensitivity 距离滚动区域多远时,滚动滚动条
scrollSpeed 滚动速度

 摘录:https://blog.csdn.net/qq_39928481/article/details/124453043

DEMO
<template> <div class="twoPage"> <div class="el-row"> <div class="el-col" :span="12"> <h3>Draggable 1</h3> <draggable class="list-group" :list="list1" group="people" @change="log"> <div class="list-group-item" v-for="(element, index) in list1" :key="element.name" > {{ element.name }} {{ index }} </div> </draggable> </div> <div class="el-col" :span="12"> <h3>Draggable 2</h3> <draggable class="list-group" :list="list2" group="people" @change="log"> <div class="list-group-item" v-for="(element, index) in list2" :key="element.name" > {{ element.name }} {{ index }} </div> </draggable> </div> </div> </div> </template> <script> import draggable from "vuedraggable"; export default { data() { return { list1: [ { name: "list1 - 1:John", id: 1 }, { name: "list1 - 2:Joao", id: 2 }, { name: "list1 - 3:Jean", id: 3 }, { name: "list1 - 4:Gerard", id: 4 } ], list2: [ { name: "list2 - 1:Juan", id: 5 }, { name: "list2 - 2:Edgard", id: 6 }, { name: "list2 - 3:Johnson", id: 7 } ] }; }, components:{ draggable }, mounted() { }, methods: { log: function(evt) { window.console.log(evt); } } }; </script> <style lang="less"> .ghost { opacity: 0.5; background: #c8ebfb; } .list-group{ display: flex; flex-direction: column; padding-left: 0; margin-bottom: 0; width: 300px; .list-group-item{ cursor: move; position: relative; display: block; padding: 0.75rem 1.25rem; margin-bottom: -1px; background-color: #fff; border: 1px solid rgba(0,0,0,.125); } } </style>

 

options配置项,
sort:false 表示拖动时禁止其进行排序操作
group: {name: ‘field’, pull: ‘clone’, put: false} 表示进行克隆拖动操作,并且该name和拖动的目标位置group名称一致,如右侧draggable标签的group同样为field
draggable=“.item” 将可拖动属性下放到每一个按钮下

 

 

拖拽(克隆)

<template>
  <div class="twoPage"> 
      <div class="el-row">
        <div class="el-col" :span="12">
          <h3>Draggable 1</h3>
          <draggable class="list-group" :list="list1" :group="{ name: 'people', pull: 'clone', put: true }" @change="log" :clone="cloneDog">
            <div
              class="list-group-item"
              v-for="(element, index) in list1"
              :key="element.name"
            >
              {{ element.name }} {{ index }}
            </div>
          </draggable>
        </div>

        <div class="el-col" :span="12">
          <h3>Draggable 2</h3>
          <draggable class="list-group" :list="list2" :group="{ name: 'people', pull: 'clone', put: true }" @change="log">
            <div
              class="list-group-item"
              v-for="(element, index) in list2"
              :key="element.name"
            >
              {{ element.name }} {{ index }}
            </div>
          </draggable>
        </div>
      </div>
  </div>
</template>
<script>
import draggable from "vuedraggable";
export default {
  data() {
    return {
     list1: [
        { name: "list1 - 1:John", id: 1 },
        { name: "list1 - 2:Joao", id: 2 },
        { name: "list1 - 3:Jean", id: 3 },
        { name: "list1 - 4:Gerard", id: 4 }
      ],
      list2: [
        { name: "list2 - 1:Juan", id: 5 },
        { name: "list2 - 2:Edgard", id: 6 },
        { name: "list2 - 3:Johnson", id: 7 }
      ]
    };
  },
  components:{
    draggable
  },
  mounted() {
  },
  methods: {
    log: function(evt) {
      window.console.log(evt);
    },
    cloneDog({ id }) {
      return {
        id: 8,
        name: 'cat'
      };
    }
  }
};
</script>
<style lang="less">
.ghost {
  opacity: 0.5;
  background: #c8ebfb;
}
.list-group{
  display: flex;
  flex-direction: column;
  padding-left: 0;
  margin-bottom: 0;
  width: 300px;
  .list-group-item{
    cursor: move;
    position: relative;
    display: block;
    padding: 0.75rem 1.25rem;
    margin-bottom: -1px;
    background-color: #fff;
    border: 1px solid rgba(0,0,0,.125);
  }
}
</style>

  

 

标签:vue,group,name,记录,拖动,list1,draggable,true,id
From: https://www.cnblogs.com/shengjiangMock/p/18044885

相关文章

  • 好用的网站记录
    1.DataV一个基于Vue的数据可视化组件库,提供用于提升页面视觉效果的SVG边框和装饰、常用的图表如折线图等和飞线图/轮播表等其他组件 在线观看地址:DataV(jiaminghi.com)github地址:GitHub-lin-xin/vue-manage-system:Vue3、ElementPlus、typescript后台管理系统  2......
  • ssts-hospital-web-master项目实战记录三十:项目迁移-Hook实现(useSystemService)
    记录时间:2024-02-29一、useSystemService模块实现service/system-service/useTerminalService.tsimporthydatefrom'@/utils/date-format'import{LogInfo}from'@/framework/utils/log-local'import{Device}from'@/types/device'impor......
  • Vue学习笔记24--收集表单数据
    Vue收集表单数据总结:<inputtype="text"/>,则v-model收集的是value值,用户输入的就是value值。<inputtype="radio"/>,则v-model收集的是value值,且要给标签配置value值。<inputtype="checkbox"/>没有配置input的value属性,那么收集的就是checked(勾选或未勾选,是bool值)配置inp......
  • vue3 echart组件封装
    项目中用到了很多echart图表,进行了简单的组件封装,主要包含以下功能:创建图表实例,渲染图表支持传入自定义函数,可拿到图表实例,实现个性化功能支持配置更新后图表自动刷新,可配置是清空后再刷新loading状态控制resize时图表更新支持饼图默认高亮功能实现资源引入echart资源......
  • Vue学习笔记23--监视数据总结
    Vue监视数据总结vue会监视data中所有层次的数据如何监测对象中的数据通过setter实现监视,且要在newVue时就传入要监测的数据对象中后添加的属性,Vue默认不做响应式处理如需给后添加的属性做响应式,请使用如下API:Vue.set(target,propertyName/index,vaue)或vm.$set(target,pr......
  • 前端学习-vue学习005-条件渲染
    使用教程使用v-if,v-else指令来有条件地渲染元素:如下例,当awesome值为真值(Truthy)时渲染第一个h1,否则渲染第二个h1<h1v-if="awesome">Vueisawesome!</h1><h1v-else>Ohno......
  • Vue源码解读:手写一个简易版Vue
    Vue源码解读:手写一个简易版Vue</h1><divclass="clear"></div><divclass="postBody"><divid="cnblogs_post_body"class="blogpost-bodycnblogs-markdown">MVVM......
  • 前端学习-vue学习003-事件监听
    教程链接使用v-on指令监听DOM事件<buttonv-on:click="increment">{{count}}</button>简写语法<button@click="increment">{{count}}</button><scriptsetup>import{ref}from'vue'constcount=ref(0)......
  • 报错真正的原因export ‘default’(imported as‘Vue’) was not found in‘vue
    运行npmrundev后报错:export'Vue'(importedas'Vue')wasnotfoundin'vue' 并且加载不出页面,查了很久,终于找到原因:报错信息:WARNINGin./src/index.js24:13-16export'Vue'(importedas'Vue')wasnotfoundin'vue'(p......
  • Vue源码解读(预):手写一个简易版Vue
    Vue源码解读(预):手写一个简易版Vue MVVM设计模式,是由MVC、MVP等设计模式进化而来,M-数据模型(Model),VM-视图模型(ViewModel),V-视图层(View)。MVVM的核心是ViewModel层,它就像是一个中转站(valueconverter),负责转换Model中的数据对象来让数据变得更容易管理和使用,该层向上与视......