首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何保持拖动项目在以前的位置,直到在vue可拖动中释放

在Vue可拖动中,要保持拖动项目在以前的位置直到释放,可以通过以下步骤实现:

  1. 首先,确保你已经安装了Vue和相关的拖动库,比如vuedraggable
  2. 在Vue组件中,引入vuedraggable库,并在模板中使用draggable指令来实现拖动功能。例如:
代码语言:txt
复制
<template>
  <div>
    <draggable v-model="items" :options="dragOptions">
      <div v-for="item in items" :key="item.id">{{ item.name }}</div>
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable';

export default {
  components: {
    draggable,
  },
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' },
      ],
      dragOptions: {
        group: 'items',
        animation: 150,
        // 其他拖动选项...
      },
    };
  },
};
</script>
  1. 在上述代码中,v-model="items"items数组与拖动列表绑定起来,draggable组件会根据v-for循环生成的元素实现拖动功能。
  2. 为了保持拖动项目在以前的位置,需要在拖动开始时记录项目的初始位置,并在拖动结束时将项目放回初始位置。可以通过@start@end事件来实现。修改上述代码如下:
代码语言:txt
复制
<template>
  <div>
    <draggable v-model="items" :options="dragOptions" @start="onDragStart" @end="onDragEnd">
      <div v-for="item in items" :key="item.id">{{ item.name }}</div>
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable';

export default {
  components: {
    draggable,
  },
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' },
      ],
      dragOptions: {
        group: 'items',
        animation: 150,
        // 其他拖动选项...
      },
      initialIndex: null,
    };
  },
  methods: {
    onDragStart(event) {
      this.initialIndex = event.oldIndex;
    },
    onDragEnd(event) {
      const newIndex = event.newIndex;
      const draggedItem = this.items.splice(newIndex, 1)[0];
      this.items.splice(this.initialIndex, 0, draggedItem);
      this.initialIndex = null;
    },
  },
};
</script>
  1. 在上述代码中,onDragStart方法记录了拖动开始时的初始位置,onDragEnd方法将拖动的项目放回初始位置。通过splice方法将项目从新位置删除,并插入到初始位置。

这样,拖动项目就能保持在以前的位置,直到释放。你可以根据实际需求调整代码和样式,以适应你的项目。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券