当前位置:   article > 正文

vue+vuedraggable 实现文字/按钮/div拖拽组件详解_vue-draggable-div

vue-draggable-div

先看成果:(样式业务简陋请见谅!)

如图:左侧按钮/div/span/拖拽到右侧生成组件,右侧组件之间也可以互相碰撞替换;

左右都是数组,拖拽的过程相当于两个数组数据的迁移

本功能使用得draggable插件,参数配置请跳转查看!

下面开始分享实现过程:

1、下载draggable  

npm install vuedraggable --save

2、引入 draggable

  1. import draggable from 'vuedraggable'
  2. // 注册
  3. components: { draggable }

3、 左侧代码实现

  1. <draggable
  2. v-model="dragNode"
  3. tag="ul"
  4. v-bind="{
  5. group: { name: 'people', pull: 'clone', put: false },
  6. sort: false,
  7. animation: 0,
  8. filter: '.undraggable'
  9. }"
  10. >
  11. // 循环生成按钮
  12. <button
  13. v-for="(component,index) in dragNode"
  14. :key="index"
  15. class="btn-grad-03"
  16. >
  17. {{ component.title }}
  18. </button>
  19. </draggable>

js逻辑部分

  1. // 三个测试基础组件(实际开发可替换成自己的业务)
  2. import component1 from './component1'
  3. import component2 from './component2'
  4. import component3 from './component3'
  5. components: {
  6. component1,
  7. component2,
  8. component3
  9. },
  10. // 左侧组件名称列表
  11. dragNode: [{
  12. name: 'component1',
  13. title: '文字组件'
  14. }, {
  15. name: 'component2',
  16. title: '表格组件'
  17. }, {
  18. name: 'component3',
  19. title: '环形进度条'
  20. }]

4、右侧代码实现

  1. <draggable
  2. v-model="dragData"
  3. style="width: 100%;height: 100%;"
  4. v-bind="{group: 'people',animation: 300}"
  5. >
  6. <el-col
  7. v-for="(item, index) in dragData"
  8. :key="index"
  9. :span="12"
  10. style="margin-bottom: 30px;"
  11. >
  12. <div class="drag-content">
  13. // 关闭组件
  14. <i class="el-icon-close close-icon" @click="handleCloseComponent(index)" />
  15. <div>{{ item.title }}</div>
  16. // 循环生成动态组件 :is
  17. <component :is="item.name" class="mt" />
  18. </div>
  19. </el-col>
  20. </draggable>

data 

  1. // 拖拽后的数据
  2. dragData: [],

methods

  1. // 删除关闭组件(删除数据)
  2. handleCloseComponent(index) {
  3. this.dragData.splice(index, 1)
  4. };

以上就是该功能的具体实现,有需要的小伙伴可以借鉴;


这种扩展性很高;

1、做过表单设计器,首页完全拖拽布局,生成json存储的数据库,根据json回显渲染页面,实现个性化首页(左侧组件名、中间容器、右侧数据样式设置)

2、做过大屏幕模块定制化,不同人员可设置不同右侧组件布局

也可以使用多列拖拽容器等

因效果设计公司业务。暂不展示


ps:如果内容对大家有帮助的话,不要吝啬你的小手,点赞支持支持博主

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/76836
推荐阅读
相关标签
  

闽ICP备14008679号