1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vue+vuedraggable 实现文字/按钮/div拖拽组件详解

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

时间:2022-10-20 11:53:12

相关推荐

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

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

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

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

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

下面开始分享实现过程:

1、下载draggable

npm install vuedraggable --save

2、引入draggable

import draggable from 'vuedraggable'// 注册components: { draggable }

3、 左侧代码实现

<draggablev-model="dragNode"tag="ul"v-bind="{group: { name: 'people', pull: 'clone', put: false },sort: false,animation: 0,filter: '.undraggable'}">// 循环生成按钮<button v-for="(component,index) in dragNode" :key="index" class="btn-grad-03">{{ component.title }}</button></draggable>

js逻辑部分

// 三个测试基础组件(实际开发可替换成自己的业务)import component1 from './component1'import component2 from './component2'import component3 from './component3'components: {component1,component2,component3},// 左侧组件名称列表dragNode: [{name: 'component1',title: '文字组件'}, {name: 'component2',title: '表格组件'}, {name: 'component3',title: '环形进度条'}]

4、右侧代码实现

<draggablev-model="dragData"style="width: 100%;height: 100%;"v-bind="{group: 'people',animation: 300}"><el-col v-for="(item, index) in dragData" :key="index" :span="12" style="margin-bottom: 30px;"><div class="drag-content">// 关闭组件<i class="el-icon-close close-icon" @click="handleCloseComponent(index)" /><div>{{ item.title }}</div>// 循环生成动态组件 :is<component :is="item.name" class="mt" /></div></el-col></draggable>

data

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

methods

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

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

这种扩展性很高;

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

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。