Vue.Draggable实现交换位置

需要实现拖拽排序的网页功能时,可以选用Vue.Draggable这个js库来实现。技术栈需要熟悉Vue框架及基本的HTML和CSS。

以下是实现Vue.Draggable交换位置的步骤:

1.引入 Vue.Draggable 库:使用 npm 直接进行安装,通过 import 引入库即可。或者直接引入js文件。

//页面引入 Vue.Draggable JS文件
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.22.0/vuedraggable.umd.min.js"></script>

使用 npm 安装 Vue.Draggable 库

npm install vuedraggable --save
import vuedraggable from 'vuedraggable'
Vue.component('draggable',vuedraggable)
  1. 绑定数据:在 components 中注册组件,在 data 里绑定要显示的列表数据。
<draggable v-model="list1">
    <div class="drag-row" v-for="(item, index) in list1" :key="index">{{ item }}</div>
</draggable>

data: {
    list1: ["item1", "item2", "item3"]
}    
  1. 定义样式:自定义每个子元素的样式,实现拖拽效果
/*移动时的背景,?开启硬件加速*/
.drag-list:active {
    cursor: move;
    -webkit-user-select: none;
    user-select: none;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}

/*每个元素的样式*/
.drag-row {
    background-color: #f7f7f7;
    padding: 10px;
    margin: 5px 0;
}

附:demo用例1

<template>
<div class="demo-container">
    <draggable v-model="list1" @end="handleDrop">
        <div class="drag-row" v-for="(item, index) in list1" :key="index">{{ item }}</div>
    </draggable>
</div>
</template>

<script>
    import draggable from 'vuedraggable'
    export default {
        data() {
            return {
                list1: ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
            }
        },
        components: {
            draggable
        },
        methods: {
            handleDrop(event) {
                console.log('拖拽完成,当前顺序', this.list1)
            }
        }
    }
</script>

附:demo用例2(实现拖动与删除)

<template>
<div class="demo-container">
    <draggable v-model="list1" @end="handleDrop">
        <div class="drag-row" v-for="(item, index) in list1" :key="index" >
            {# 修改这个(点击删除时调用的方法) #}
            <span class="delete-btn" @click.stop="deleteItem(item)">X</span>
            {{ item }}
        </div>
    </draggable>
</div>
</template>

<script>
    import draggable from 'vuedraggable'
    export default {
        data() {
            return {
                list1: ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
            }
        },
        components: {
            draggable
        },
        methods: {
            handleDrop(event) {
                console.log('拖拽完成,当前顺序', this.list1)
            },

            /* 新增删除方法 */
            deleteItem(item) {
                const index = this.list1.indexOf(item)
                if (index > -1) {
                    this.list1.splice(index, 1)
                }
            }
        }
    }
</script>

至此,完成Vue.Draggable实现交换位置的攻略。

需要注意的是,Vue.Draggable不仅能够实现交换位置,还可以实现多方向拖拽、拖拽与排序、拖拽与删除等功能,具体的使用可以查阅官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue.Draggable实现交换位置 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • vue数据字典取键值方式

    当我们使用Vue来进行前端开发时,经常会用到数据字典。而获取数据字典的键值可以通过以下两种方法来实现。 方法一:使用计算属性 计算属性是Vue提供的一个能够对数据进行监听并保持响应式的一个特性。可以通过这个特性来进行数据字典的取值。 首先,我们需要定义一个数据字典的对象,例如: const dict = { 1: ‘男’, 2: ‘女’ } 然后,在使用该数…

    Vue 2023年5月29日
    00
  • vue绑定class与行间样式style详解

    Vue绑定class与行间样式style详解 在Vue中,我们可以通过v-bind指令来绑定元素的class和行间样式style,实现动态控制页面样式的效果。 绑定class 对象语法 在模板中,使用v-bind:class指令来绑定class。当对象中的属性值为true时,class会被应用到元素上,反之该class不会被应用。 示例代码如下: <t…

    Vue 2023年5月27日
    00
  • Vuex中actions优雅处理接口请求的方法

    下面是对于“Vuex中actions优雅处理接口请求的方法”的完整攻略: 1. 使用async/await处理接口请求 async/await 是一个结合了 Promise 和 Generator 的语法糖,它能让我们以同步的方式编写异步代码。我们可以通过它来简化数据请求的处理。 首先我们需要在 actions 中编写异步请求函数。例如,我们需要获取用户的信…

    Vue 2023年5月28日
    00
  • mpvue 如何使用腾讯视频插件的方法

    为了使用腾讯视频插件,应该先安装该插件。在命令行里输入以下命令进行安装: npm install wechat-miniprogram-video –save 安装完成后,根据以下步骤使用mpvue和腾讯视频插件: 1.在 Vue 实例中的生命周期created中使用如下代码引入腾讯视频插件及样式: import ‘wechat-miniprogram-v…

    Vue 2023年5月28日
    00
  • vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)

    Vue.js中的自定义指令是一种非常重要的扩展机制,可以实现在标准DOM元素上添加额外的行为,从而实现更加强大的功能。 Vue.js提供了两种自定义指令的实现方法,一种是内部自定义指令,一种是全局自定义指令。下面将详细讲解如何使用Directive实现这两种自定义指令。 内部自定义指令 内部自定义指令是指在Vue.js组件的template中定义的指令,在组…

    Vue 2023年5月28日
    00
  • Vue中添加滚动事件设置的方法详解

    下面详细讲解在Vue中添加滚动事件设置的方法。 1. 给元素绑定滚动事件 我们可以使用v-on指令来给元素绑定滚动事件。比如下面给一个div元素绑定滚动事件: <div v-on:scroll="handleScroll"></div> 上面的代码中,v-on:scroll表示给div元素绑定滚动事件,handle…

    Vue 2023年5月28日
    00
  • Vue computed计算属性的使用方法

    当我们在Vue项目中需要根据数据的状态改变来计算出一个新的值时,可以使用Vue中的计算属性(computed)。计算属性是一个具有缓存机制的属性,只有当它依赖的数据发生变化时,才会重新计算其值。计算属性的优势在于可以减少模板中的逻辑操作,提高页面渲染效率。 下面是计算属性的使用方法及示例说明: 1.定义计算属性 我们可以在Vue实例中定义一个名为“compu…

    Vue 2023年5月27日
    00
  • Vue导出Excel功能的全过程记录

    下面是详细讲解“Vue导出Excel功能的全过程记录”的完整攻略。 1. 背景说明 Excel是一个办公软件中常用的工具,它可以方便地进行表格数据的输入和编辑。在Web应用中,我们可能需要将表格数据以Excel格式导出,这就需要实现一个导出Excel的功能。Vue是一款流行的JavaScript框架,本文将介绍如何在Vue项目中实现导出Excel的功能。 2…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部