vue 목록 드래그 정렬 기능 구현
이 예 는 vuecli 3 기반 입 니 다.
우선,우 리 는 먼저 js 원생 드래그 사건 을 알 아 보 자.
드래그 대상 에 이벤트 발동 (원본 요소):
이 어 끌 어 당 기 는 과정 에서 이 끌 어 당 기 는 항목 이 목록 의 다른 항목 을 거 쳤 을 때 ondragenter 이벤트 가 발생 합 니 다.이 끌 어 당 기 는 항목 이 마지막 으로 거 친 목록 의 다른 항목 의 데 이 터 를 기록 하고 마지막 으로 ondragend 이벤트 에 기록 합 니 다.
초기 ondragstart 이벤트 기록 의 드래그 항목 을 삭제 하고 삭 제 된 데 이 터 를 ondragenter 이벤트 의 마지막 기록 위치 에 삽입 하여 드래그 정렬 을 완료 합 니 다.
구체 적 인 코드 는 다음 과 같다.
<template>
<div class="test_wrapper" @dragover="dragover($event)">
<transition-group class="transition-wrapper" name="sort">
<div v-for="(item) in dataList" :key='item.id' class="sort-item"
:draggable="true"
@dragstart="dragstart(item)"
@dragenter="dragenter(item,$event)"
@dragend="dragend(item,$event)"
@dragover="dragover($event)"
>
{{ item.label }}
</div>
</transition-group>
</div>
</template>
<script lang="ts">
import {Vue, Component, Prop, Watch} from "vue-property-decorator";
import { addWebsite } from '@/api'
@Component({
components: {}
})
export default class Test extends Vue {
oldData: any = null; //
newData: any = null; //
//
dataList:any = [
{ id:1,label:' ' },
{ id:2,label:' ' },
{ id:3,label:' ' },
{ id:4,label:' ' },
];
dragstart(value: any) {
this.oldData = value
}
//
dragenter(value: any, e: any) {
this.newData = value
e.preventDefault()
}
//
dragend(value: any, e: any) {
if (this.oldData !== this.newData) {
let oldIndex = this.dataList.indexOf(this.oldData)
let newIndex = this.dataList.indexOf(this.newData)
let newItems = [...this.dataList]
//
newItems.splice(oldIndex, 1)
//
newItems.splice(newIndex, 0, this.oldData)
this.dataList = [...newItems]
}
}
// ( )
dragover(e: any) {
e.preventDefault()
}
};
</script>
달리드래그 된 애니메이션 효 과 를 실현 하기 위해 transition-group 구성 요 소 를 사 용 했 습 니 다.위 코드 와 같이 transition-group 구성 요소 의 속성 name 을'sort'로 설정 합 니 다.다음 코드 를 추가 합 니 다.
.sort-move {
transition: transform 0.3s;
}
메모:transition 이 효과 가 나타 나 도록 v-for 렌 더 링 데이터 목록 에 key 속성 이 있어 야 하 며 이 key 속성 은 index 로 설정 할 수 없습니다. 최종 효 과 는 다음 과 같다.
이상 은 vue 가 목록 드래그 정렬 기능 을 실현 하 는 상세 한 내용 입 니 다.vue 드래그 정렬 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.