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('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]) },🎜참고: 아래에서 위로 드래그하면 노드가 1씩 증가하므로 원래 인덱스 값은
newIndex < oldIndex
일 때 oldLi
노드의 다음 노드를 사용하여 🎜rrreee🎜🎜 배열을 변경하고 🎜🎜🎜 원본 배열, 그리고 데이터 저장🎜rrreee🎜나머지 배열 인덱스 값에 데이터 추가🎜rrreee🎜🎜전체 코드🎜🎜rrreee🎜권장: "🎜uniapp tutorial🎜"🎜위 내용은 uni-app+sortable.js는 드래그 앤 드롭 정렬을 어떻게 구현합니까? 단계 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!