uls.insertBefore(newLi, oldLi.nextSibling)
uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유
uni-app에서 드래그 앤 드롭 정렬을 구현하는 방법은 무엇입니까? 다음 글에서는 sortable.js를 사용하여 uni-app에서 드래그 앤 드롭 정렬을 구현하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다.
uni-app 드래그 앤 드롭 정렬
머리말
이번주에 페이지를 만들다가 수동으로 드래그하여 정렬 위치를 변경할 수 있는 문자 정렬 기능이 있었습니다. 검색 끝에 이 드래그 앤 드롭 기능을 구현하는 데 사용할 수 있는
sortable.js을 찾았습니다.
Idea
sortable.js
공식 문서를 보니 onUpdate
이벤트가 있어서 위치를 변경하고 있습니다. , 반환 값에는 시작 인덱스 값과 변경된 인덱스 값이 포함됩니다. 이를 통해 배열의 내용을 변경하여 드래그 후 위치를 변경하는 기능을 구현할 수 있습니다. sortable.js
官方文档时,看到里面中有一个onUpdate
事件,拖拽改变位置后,其中的返回值中,就有着起始index值和改变后的index值,通过这个,就可以更改数组的内容,来达到拖拽后改变位置的功能。
步骤
安装sortable.js
npm install sortablejs --save-dev
获取节点
这里获取的节点是需要拖拽列表的父节点
let uls = document.getElementById('list')
加载节点
new Sortable(uls,{})
触发<span style="font-size: 18px;">onUpdate</span>
事件
因为在做的过程中,发现如果用操作dom节点的位置去修改item的顺序时,会产生bug,所以经过查找资料,终于在Vue中使用Sortable找到了问题所在,因此在修改item顺序前,应先修改其对于的节点。
改变节点
先删除移动的节点,在将移动的节点插入到原有的节点中
newLi = uls.children[newIndex], //移动节点 oldLi = uls.children[oldIndex]; //原有节点 uls.removeChild(newLi) // 删除移动的节点 uls.insertBefore(newLi, oldLi) // 将移动节点插入到原有节点中
注意:因为当从下向上拖动时,节点会增加一个,所以原有的索引值会少一位,所在当newIndex < oldIndex
时,因使用oldLi
Steps
sortable.js
설치
uls.insertBefore(newLi, oldLi.nextSibling)
로그인 후 복사노드 가져오기
uls.insertBefore(newLi, oldLi.nextSibling)
여기에서 얻은 노드가 목록으로 드래그해야 하는 상위 노드입니다
let item = _this.items.splice(oldIndex, 1)
_this.items.splice(newIndex, 0, item[0])
🎜onUpdate🎜
🎜 이벤트🎜🎜🎜🎜를 트리거합니다. 왜냐하면 이를 수행하는 과정에서 dom 노드의 위치를 사용하면 발견했습니다. 항목 순서를 수정하면 버그가 발생하기 때문에 정보 검색 끝에 Vue에서 Sortable을 사용하여 문제를 발견했습니다🎜 항목 순서를 수정하기 전에 먼저 해당 노드를 수정해야 합니다. 🎜🎜🎜노드 변경🎜🎜🎜먼저 이동한 노드를 삭제한 다음 이동한 노드를 원래 노드에 삽입하세요🎜let uls = document.getElementById('list') new Sortable(uls, { onUpdate: function (event) { //获得基础数据 let newIndex = event.newIndex, oldIndex = event.oldIndex, newLi = uls.children[newIndex], oldLi = uls.children[oldIndex]; // 删除原有节点 uls.removeChild(newLi) // 将移动的节点插入原有节点中 if (newIndex > oldIndex) { uls.insertBefore(newLi, oldLi) } else { uls.insertBefore(newLi, oldLi.nextSibling) } // 修改数组 let item = _this.items.splice(oldIndex, 1) _this.items.splice(newIndex, 0, item[0]) },
newIndex < oldIndex
일 때 oldLi
노드의 다음 노드를 사용하여 🎜rrreee🎜🎜 배열을 변경하고 🎜🎜🎜 원본 배열, 그리고 데이터 저장🎜rrreee🎜나머지 배열 인덱스 값에 데이터 추가🎜rrreee🎜🎜전체 코드🎜🎜rrreee🎜권장: "🎜uniapp tutorial🎜"🎜위 내용은 uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











VSCode에서 uni-app을 개발하는 방법은 무엇입니까? 다음 기사에서는 VSCode에서 uni-app을 개발하는 방법에 대한 튜토리얼을 공유할 것입니다. 이것은 아마도 가장 훌륭하고 자세한 튜토리얼일 것입니다. 와서 살펴보세요!

uniapp을 사용하여 간단한 지도 탐색을 개발하는 방법은 무엇입니까? 이 기사는 간단한 지도를 만드는 데 도움이 되기를 바랍니다.

Vue 및 Element-UI를 사용하여 드래그 앤 드롭 정렬 기능을 구현하는 방법 서문: 웹 개발에서 드래그 앤 드롭 정렬 기능은 일반적이고 실용적인 기능입니다. 이 기사에서는 Vue 및 Element-UI를 사용하여 드래그 앤 드롭 정렬 기능을 구현하는 방법을 소개하고 코드 예제를 통해 구현 프로세스를 보여줍니다. 1. 환경 설정 및 설치 Node.js 시작하기 전에 Node.js를 설치해야 합니다. https://nodejs.org/를 방문하여 운영 체제에 해당하는 버전을 다운로드하여 설치할 수 있습니다. VueCL 설치

vue 및 Element-plus를 사용하여 드래그 앤 드롭 및 정렬 기능을 구현하는 방법 소개: 현대 웹 개발에서 사용자 상호 작용 경험은 점점 더 중요해지고 있습니다. 드래그 앤 드롭 및 정렬 기능은 사용자가 요소를 쉽게 재배치하거나 요소 위치를 조정할 수 있는 일반적인 대화형 작업입니다. 이 기사에서는 Vue 및 Element-plus 라이브러리를 사용하여 드래그 앤 드롭 및 정렬 기능을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 기술적 준비: Vue 및 Element-plus 관련 코드 작성을 시작하려면

uniapp을 사용하여 스네이크 게임을 개발하는 방법은 무엇입니까? 다음 기사는 uniapp에서 Snake 게임을 구현하는 방법을 단계별로 설명합니다. 도움이 되기를 바랍니다.

uni-app 인터페이스, 전역 메서드 캡슐화 1. 루트 디렉터리에 api 파일을 생성하고 api 폴더에 api.js, baseUrl.js 및 http.js 파일을 생성합니다. 2.baseUrl.js 파일 코드 importdefault"https://XXXX .test03.qcw800.com/api/"3.http.js 파일 코드 내보내기 기능https(opts,data){lethttpDefaultOpts={url:opts.url,data:data,method:opts.method

이번 글에서는 다중 선택박스의 전체 선택 기능 구현과 관련된 이슈를 주로 정리한 uniapp 관련 지식을 소개합니다. 전체 선택 기능을 구현할 수 없는 이유는 체크박스의 체크된 필드가 동적으로 수정하면 인터페이스의 상태가 실시간으로 변경될 수 있지만 checkbox-group의 변경 이벤트는 트리거될 수 없습니다. 모두에게 도움이 되기를 바랍니다.

이 글은 유니앱 캘린더 플러그인 개발 과정을 단계별로 안내하고, 다음 캘린더 플러그인 개발부터 출시까지 어떻게 진행되는지 소개하는 글이 여러분께 도움이 되길 바랍니다!
