목차
uni-app 드래그 앤 드롭 정렬
uls.insertBefore(newLi, oldLi.nextSibling)
로그인 후 복사
노드 가져오기" >
uls.insertBefore(newLi, oldLi.nextSibling)
로그인 후 복사
노드 가져오기
웹 프론트엔드 uni-app uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유

uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유

Nov 24, 2021 pm 07:49 PM
uni-app 드래그 앤 드롭 정렬

uni-app에서 드래그 앤 드롭 정렬을 구현하는 방법은 무엇입니까? 다음 글에서는 sortable.js를 사용하여 uni-app에서 드래그 앤 드롭 정렬을 구현하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다.

uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유

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)
로그인 후 복사
노드 가져오기

여기에서 얻은 노드가 목록으로 드래그해야 하는 상위 노드입니다

let item = _this.items.splice(oldIndex, 1)
로그인 후 복사

🎜노드 로드🎜 🎜
_this.items.splice(newIndex, 0, item[0])
로그인 후 복사
🎜🎜🎜는 🎜🎜onUpdate🎜🎜 이벤트🎜🎜🎜🎜를 트리거합니다. 왜냐하면 이를 수행하는 과정에서 dom 노드의 위치를 ​​사용하면 발견했습니다. 항목 순서를 수정하면 버그가 발생하기 때문에 정보 검색 끝에 Vue에서 Sortable을 사용하여 문제를 발견했습니다🎜 항목 순서를 수정하기 전에 먼저 해당 노드를 수정해야 합니다. 🎜🎜🎜노드 변경🎜🎜🎜먼저 이동한 노드를 삭제한 다음 이동한 노드를 원래 노드에 삽입하세요🎜
let uls = document.getElementById(&#39;list&#39;)
    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])
      },
로그인 후 복사
🎜참고: 아래에서 위로 드래그하면 노드가 1씩 증가하므로 원래 인덱스 값은 newIndex < oldIndex일 때 oldLi 노드의 다음 노드를 사용하여 🎜rrreee🎜🎜 배열을 변경하고 🎜🎜🎜 원본 배열, 그리고 데이터 저장🎜rrreee🎜나머지 배열 인덱스 값에 데이터 추가🎜rrreee🎜🎜전체 코드🎜🎜rrreee🎜권장: "🎜uniapp tutorial🎜"🎜

위 내용은 uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

VSCode에서 uni-app을 개발하는 방법은 무엇입니까? (튜토리얼 공유) VSCode에서 uni-app을 개발하는 방법은 무엇입니까? (튜토리얼 공유) May 13, 2022 pm 08:11 PM

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

uniapp을 사용하여 간단한 지도 탐색 개발 uniapp을 사용하여 간단한 지도 탐색 개발 Jun 09, 2022 pm 07:46 PM

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

Vue 및 Element-UI를 사용하여 드래그 앤 드롭 정렬 기능을 구현하는 방법 Vue 및 Element-UI를 사용하여 드래그 앤 드롭 정렬 기능을 구현하는 방법 Jul 22, 2023 pm 04:12 PM

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

vue 및 Element-plus를 사용하여 드래그 앤 드롭 및 정렬 기능을 구현하는 방법 vue 및 Element-plus를 사용하여 드래그 앤 드롭 및 정렬 기능을 구현하는 방법 Jul 17, 2023 pm 09:02 PM

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

uniapp을 활용하여 스네이크 게임을 개발하는 방법에 대해 이야기해보겠습니다! uniapp을 활용하여 스네이크 게임을 개발하는 방법에 대해 이야기해보겠습니다! May 20, 2022 pm 07:56 PM

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

uni-app vue3 인터페이스 요청을 캡슐화하는 방법 uni-app vue3 인터페이스 요청을 캡슐화하는 방법 May 11, 2023 pm 07:28 PM

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이 다중 선택 상자의 전체 선택 기능을 구현하는 방법을 설명하는 예 uniapp이 다중 선택 상자의 전체 선택 기능을 구현하는 방법을 설명하는 예 Jun 22, 2022 am 11:57 AM

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

uni-app 캘린더 플러그인을 개발하고 게시하는 방법을 단계별로 안내합니다. uni-app 캘린더 플러그인을 개발하고 게시하는 방법을 단계별로 안내합니다. Jun 30, 2022 pm 08:13 PM

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

See all articles