当前位置:首页 > VUE

实现拖拽生成vue

2026-03-29 15:09:58VUE

拖拽生成 Vue 组件的基础实现

使用 Vue 的 v-draggable 指令或第三方库如 vue-draggable 可以快速实现拖拽功能。安装依赖:

npm install vuedraggable

在组件中引入并使用:

<template>
  <draggable v-model="list" @end="onDragEnd">
    <div v-for="item in list" :key="item.id">{{ item.name }}</div>
  </draggable>
</template>

<script>
import draggable from 'vuedraggable';
export default {
  components: { draggable },
  data() {
    return { list: [{ id: 1, name: 'Item 1' }] };
  },
  methods: {
    onDragEnd() {
      console.log('拖拽结束');
    }
  }
};
</script>

结合可视化编辑器

使用 vue-designform-generator 等工具实现可视化拖拽生成表单:

npm install form-generator

示例代码结构:

<template>
  <fm-generator 
    :data="formData" 
    :remote="remoteFuncs"
    @change="handleChange"
  />
</template>

<script>
import { FmGenerator } from 'form-generator';
export default {
  components: { FmGenerator },
  data() {
    return {
      formData: { fields: [] },
      remoteFuncs: {}
    };
  }
};
</script>

自定义拖拽逻辑

通过原生 HTML5 拖拽 API 实现自定义控制:

<template>
  <div 
    draggable="true"
    @dragstart="handleDragStart"
    @dragover.prevent
    @drop="handleDrop"
  >拖拽元素</div>
</template>

<script>
export default {
  methods: {
    handleDragStart(e) {
      e.dataTransfer.setData('text/plain', '自定义数据');
    },
    handleDrop(e) {
      const data = e.dataTransfer.getData('text/plain');
      console.log('接收数据:', data);
    }
  }
};
</script>

动态组件生成

拖拽后动态渲染组件:

<template>
  <component 
    v-for="(item, index) in components" 
    :key="index" 
    :is="item.type"
    v-bind="item.props"
  />
</template>

<script>
export default {
  data() {
    return {
      components: [
        { type: 'el-button', props: { type: 'primary' } }
      ]
    };
  }
};
</script>

与后端数据交互

拖拽结果保存到后端:

实现拖拽生成vue

methods: {
  async saveLayout() {
    const res = await axios.post('/api/save', this.layoutData);
    console.log('保存结果:', res.data);
  }
}

标签: 拖拽vue
分享给朋友:

相关文章

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data: {…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现模块

vue实现模块

Vue 实现模块化的方法 Vue 支持多种模块化开发方式,可以根据项目需求选择适合的方案。 使用单文件组件(SFC) 单文件组件是 Vue 最常用的模块化方式,将模板、脚本和样式封装在一个 .vue…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…