当前位置:首页 > 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.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue实现muli

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue-i…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…

vue 实现templateurl

vue 实现templateurl

在 Vue 中,templateUrl 是 Angular 中的一个概念,用于指定外部 HTML 文件作为模板。Vue 本身不直接支持 templateUrl,但可以通过以下方法实现类似功能: 使用…