Rumah > hujung hadapan web > uni-app > Bagaimanakah cara uni-app sortable.js melaksanakan pengisihan seret dan lepas? Perkongsian langkah

Bagaimanakah cara uni-app sortable.js melaksanakan pengisihan seret dan lepas? Perkongsian langkah

青灯夜游
Lepaskan: 2021-11-24 19:49:46
ke hadapan
4663 orang telah melayarinya

Bagaimana untuk melaksanakan pengisihan seret dan lepas dalam apl uni? Artikel berikut akan memperkenalkan kepada anda cara menggunakan sortable.js untuk melaksanakan pengisihan seret dan lepas dalam apl uni. Saya harap ia akan membantu anda!

Bagaimanakah cara uni-app sortable.js melaksanakan pengisihan seret dan lepas? Perkongsian langkah

uni-app drag and drop sorting

Panduan

Buat satu ini minggu Pada halaman, terdapat fungsi pengisihan aksara yang boleh diseret secara manual untuk menukar kedudukan isihan. Selepas mencari, saya menemui

sortable.js, yang boleh digunakan untuk melaksanakan fungsi seret dan lepas ini.

Fikiran

Apabila melihat sortable.js dokumen rasmi, saya melihat acara onUpdate di dalamnya, selepas menyeret untuk menukar kedudukan , nilai pulangan mengandungi nilai indeks permulaan dan nilai indeks yang diubah Melalui ini, anda boleh menukar kandungan tatasusunan untuk mencapai fungsi menukar kedudukan selepas menyeret.

Langkah

Pasangsortable.js

npm install sortablejs --save-dev
Salin selepas log masuk

Dapatkan nod

Nod yang diperoleh di sini ialah nod induk senarai seret

let uls = document.getElementById('list')
Salin selepas log masuk

Memuatkan nod

 new Sortable(uls,{})
Salin selepas log masuk

Pencetuskan <code><span style="font-size: 18px;">onUpdate</span>onUpdate acara

Kerana dalam proses melakukannya, saya mendapati bahawa jika saya menggunakan nod dom untuk beroperasi Apabila mengubah suai susunan item, pepijat akan berlaku, jadi selepas mencari maklumat, saya akhirnya menemui masalah menggunakan Sortable dalam

Vue, sebelum mengubah suai susunan item, anda harus terlebih dahulu ubah suai nod yang sepadan.

Tukar nod

Padamkan nod yang dialihkan dahulu, kemudian masukkan nod yang dialihkan ke dalam nod asal
newLi = uls.children[newIndex],  //移动节点
oldLi = uls.children[oldIndex];  //原有节点
uls.removeChild(newLi) // 删除移动的节点
uls.insertBefore(newLi, oldLi) // 将移动节点插入到原有节点中
Salin selepas log masuk

newIndex < oldIndexNota: Kerana Apabila menyeret dari bawah ke atas, nod akan meningkat sebanyak satu, jadi nilai indeks asal akan menjadi kurang satu Apabila oldLi, nod seterusnya bagi nod

digunakan,
uls.insertBefore(newLi, oldLi.nextSibling)
Salin selepas log masuk

Tukar tatasusunan

Padam tatasusunan asal dan simpan data
let item = _this.items.splice(oldIndex, 1)
Salin selepas log masuk

Tambah data pada nilai indeks tatasusunan yang tinggal
_this.items.splice(newIndex, 0, item[0])
Salin selepas log masuk

Lengkap kod

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])
      },
Salin selepas log masuk

Disyorkan: "tutorial uniapp

"

Atas ialah kandungan terperinci Bagaimanakah cara uni-app sortable.js melaksanakan pengisihan seret dan lepas? Perkongsian langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan