目錄
uni-app 拖曳排序
首頁 web前端 uni-app uni-app+sortable.js怎麼實現拖曳排序?步驟分享

uni-app+sortable.js怎麼實現拖曳排序?步驟分享

Nov 24, 2021 pm 07:49 PM
uni-app 拖曳排序

uni-app中怎麼實現拖曳排序?以下這篇文章為大家介紹一下uni-app中使用sortable.js實作拖曳排序的方法,希望對大家有幫助!

uni-app+sortable.js怎麼實現拖曳排序?步驟分享

uni-app 拖曳排序

#前言

這週做一個頁面時,有一個人物排序,可以手動拖曳更改排序位置的功能。經過尋找之後,找到了

sortable.js,它可以用來實作這個拖曳的功能。

想法

在檢視sortable.js官方文件時,看到裡面有一個onUpdate 事件,拖曳改變位置後,其中的回傳值中,就有起始index值和改變後的index值,透過這個,就可以更改陣列的內容,來達到拖曳後改變位置的功能。

步驟

安裝sortable.js

npm install sortablejs --save-dev
登入後複製

取得節點

這裡取得的節點是需要拖曳清單的父節點

let uls = document.getElementById('list')
登入後複製

載入節點

 new Sortable(uls,{})
登入後複製

##觸發onUpdate<span style="font-size: 18px;"></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節點的下一個節點

uls.insertBefore(newLi, oldLi.nextSibling)
登入後複製

更改數組

刪除原有數組,並且儲存資料

let item = _this.items.splice(oldIndex, 1)
登入後複製

將資料加入停留的數組索引值上

_this.items.splice(newIndex, 0, item[0])
登入後複製

完整程式碼
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])
      },
登入後複製
推薦:《

uniapp教學

以上是uni-app+sortable.js怎麼實現拖曳排序?步驟分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver 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實現拖曳排序功能前言:在Web開發中,拖曳排序功能是一項常見且實用的功能。本文將介紹如何使用Vue和Element-UI來實現拖曳排序功能,透過程式碼範例示範實作過程。一、環境搭建安裝Node.js在開始前,需要先安裝Node.js。可以存取https://nodejs.org/下載並安裝對應作業系統的版本。安裝VueCL

如何使用vue和Element-plus實作拖曳和排序功能 如何使用vue和Element-plus實作拖曳和排序功能 Jul 17, 2023 pm 09:02 PM

如何使用vue和Element-plus實現拖曳和排序功能引言:在現代的Web開發中,使用者互動體驗變得越來越重要。拖曳和排序功能是常見的互動操作,可以讓使用者方便地重新排列元素或調整元素的位置。本文將介紹如何使用Vue和Element-plus函式庫來實作拖曳和排序功能,並提供對應的程式碼範例。技術準備:為了開始編寫Vue和Element-plus相關的程式碼,我們

聊聊如何利用uniapp開發一個貪吃蛇小遊戲吧! 聊聊如何利用uniapp開發一個貪吃蛇小遊戲吧! May 20, 2022 pm 07:56 PM

如何利用uniapp開發一個貪吃蛇小遊戲?以下這篇文章就手把手帶大家在uniapp中實現貪吃蛇小遊戲,希望對大家有幫助!

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檔案程式碼exportdefault"https://XXXX .test03.qcw800.com/api/"3.http.js檔案程式碼exportfunctionhttps(opts,data){lethttpDefaultOpts={url:opts.url,data:data,method:opts.method

手把手帶你開發一個uni-app日曆插件(並發布) 手把手帶你開發一個uni-app日曆插件(並發布) Jun 30, 2022 pm 08:13 PM

這篇文章手把手帶大家開發一個uni-app日曆插件,介紹下一個日曆插件是如何從開發到發布的,希望對大家有幫助!

實例講解uniapp實現多選框的全選功能 實例講解uniapp實現多選框的全選功能 Jun 22, 2022 am 11:57 AM

這篇文章為大家帶來了關於uniapp的相關知識,其中主要整理了實現多選框的全選功能的相關問題,無法實現全選的原因是動態修改checkbox的checked字段時,界面上的狀態能夠即時變化,但無法觸發checkbox-group的change事件,下面一起來看一下,希望對大家有幫助。

See all articles