<template>
<div id="app">
<draggable v-model="components" @end="onEnd">
<transition-group>
<component
v-for="(item, index) in components"
:key="index"
:is="item.type"
:style="item.style"
/>
</transition-group>
</draggable>
</div>
</template>
<script>
import draggable from 'vuedraggable';
export default {
name: 'App',
components: {
draggable,
// 这里可以注册你想要拖拽的组件,例如 Button, Input 等等
Button: {
template: '<button>Button</button>'
},
Input: {
template: '<input type="text" />'
}
},
data() {
return {
components: [
{ type: 'Button', style: { margin: '10px' } },
{ type: 'Input', style: { margin: '10px' } }
]
};
},
methods: {
onEnd(event) {
console.log('Drag ended:', event);
// 可以在这里处理拖拽结束后的逻辑
}
}
};
</script>
<style scoped>
#app {
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
</style>
模板部分 (<template>
):
draggable
组件来实现拖拽功能。v-model
绑定了一个 components
数组,这个数组包含了所有可拖拽的组件。transition-group
用于在拖拽过程中添加过渡效果。component
标签动态渲染了 components
数组中的每个组件,并根据 item.type
和 item.style
来设置具体的组件类型和样式。脚本部分 (<script>
):
vuedraggable
库来实现拖拽功能。Button
和 Input
,你可以根据需要替换为实际使用的组件。data
中定义了一个 components
数组,存储了页面上现有的组件及其样式。methods
中定义了 onEnd
方法,在拖拽结束时触发,可以用来处理一些逻辑,比如保存新的顺序或更新状态。样式部分 (<style scoped>
):
希望这段代码能帮助你理解如何使用 Vue 实现拖拽生成页面的功能。如果有任何问题,欢迎继续讨论!
上一篇:vue甘特图组件
下一篇:vue2 自定义指令
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站