In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung des Ziehens und Sortierens von Bildern zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt Prinzip: Es gibt eine Liste mit Bildern. Ziehen Sie eines der Bilder (Auslösen von „Dragstart“). Wenn das gezogene Bild an die Position anderer Bilder verschoben wird (Auslösen von „Dragover“), wird das gezogene Bild von seiner ursprünglichen Position an diese Position verschoben (Auslösen von „Dragend“). dragstart: Das dragstart-Ereignis wird ausgelöst, wenn der Benutzer beginnt, ein Element oder eine Textauswahl zu ziehen. Dragover: Wenn ein Element oder ausgewählter Text über ein gültiges Ablageziel gezogen wird, wird das Dragover-Ereignis ausgelöst (alle paar hundert Millisekunden). dragend: Das Drag & Drop-Ereignis wird ausgelöst, wenn der Drag & Drop-Vorgang endet. (Wir brauchen es hier nicht) (1) HTML-Struktur der Bilderliste . Fügen Sie dem Element, das gezogen werden muss, das Attribut „draggable“ hinzu. Bitte beachten Sie hier: Der Schlüsselwert der Vorlage für die Schleife muss eindeutig sein, da Vue beim Rendern die direkte Wiederverwendung verwendet. Wenn der Schlüsselwert eindeutig ist, werden die nach der Neuanordnung gerenderten Listenknoten nicht wiederverwendet, wodurch einige Probleme vermieden werden können. (Beim Einfügen fügen wir bestimmte Daten entsprechend der Sequenznummer in das Array ein.) <ul Klasse="Container ziehen" @dragstart="beimDragStart" @dragover="beimDragOver" @dragend="beiDragEnde" ref="imgList"> <li v-for="(Element, IDX) in Liste" :Schlüssel='Element.Pfad' Klasse = "Drag-Liste" ziehbar="true" > <img :src="item.path" alt="" /> </li> </ul> (2) Ereignisse : dragstart, dragover Bindungsereignisse onDragStart, onDragOver onDragStart: Identifiziert das zu ziehende Element und speichert es im Status zur Verwendung durch das Dragover-Bindungsereignis während des Ziehvorgangs. onDragStart(Ereignis){ console.log("starten"); dies.draging = Ereignis.Ziel; }, onDragOver: Das Event wird ausgelöst, wenn sich das Element beim Ziehen auf einem gültigen Ziel befindet. Anstelle des gezogenen Elements wird das Zielelement identifiziert. Identifizieren Sie zunächst, ob das Zielelement das von uns benötigte Zielelement ist. Bestimmen Sie in unserem Beispiel, ob es sich um ein li-Element handelt, und stellen Sie fest, ob das Bild mit dem gezogenen identisch ist. Fügen Sie dann das gezogene Element ein. onDragOver(Ereignis){ console.log('ziehen/verschieben') event.preventDefault(); sei Ziel = Ereignis.Ziel; // Da Dragover auf ul auftritt, muss festgestellt werden, ob es sich um li handelt wenn (target.nodeName === "LI" und target.childNodes[0].src !== this.draging.childNodes[0].src) { lass idx_drag = this._index(this.dragging) lass idx_target = this._index(ziel) let _list = diese.liste let _drag = diese.Liste[idx_drag] wenn(idx_drag>idx_target){ _list.splice(idx_target,0,_list[idx_drag]); _list.splice(idx_drag+1,1) }anders{ _list.splice(idx_target+1,0,_list[idx_drag]); _list.splice(idx_drag,1) } konsole.log(_list[0].Pfad) dies.$emit("ändern", _list) } }, Der vollständige Code lautet wie folgt: <Vorlage> <div Klasse="Bildliste" v-if="Liste && Listenlänge"> <ul Klasse="Container ziehen" @dragstart="beimDragStart" @dragover="beimDragOver" @dragend="beiDragEnde" ref="imgList"> <li v-for="(Element, IDX) in Liste" :Schlüssel='Element.Pfad' Klasse = "Drag-Liste" ziehbar="true" > <img :src="item.path" alt="" /> </li> </ul> </div> </Vorlage> <Skript> Standard exportieren { Name: „Bildliste ziehen“, Requisiten:{ Liste: Array, }, Daten(){ zurückkehren { dragging:null, //Das Objekt, das gezogen wird} }, Methoden:{ onDragStart(Ereignis){ console.log("starten"); dies.draging = Ereignis.Ziel; }, onDragOver(Ereignis){ console.log('ziehen/verschieben') event.preventDefault(); sei Ziel = Ereignis.Ziel; // Da Dragover auf ul auftritt, muss festgestellt werden, ob es sich um li handelt wenn (target.nodeName === "LI" && target.childNodes[0].src !== this.draging.childNodes[0].src) { lass idx_drag = this._index(this.dragging) lass idx_target = this._index(ziel) let _list = diese.liste let _drag = diese.Liste[idx_drag] wenn(idx_drag>idx_target){ _list.splice(idx_target,0,_list[idx_drag]); _list.splice(idx_drag+1,1) }anders{ _list.splice(idx_target+1,0,_list[idx_drag]); _list.splice(idx_drag,1) } konsole.log(_list[0].Pfad) } }, onDragEnd(Ereignis){ console.log('Ereignis beenden') }, _index(el){ Var-Index = 0; wenn (!el || !el.parentNode) { Rückgabe -1; } während (el && (el = el.vorherigesElementGeschwister)) { Index++; } Rückgabeindex; }, } } </Skript> Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So stellen Sie per SSH eine Verbindung zum Docker-Server her
>>: So vermeiden Sie Datenschleifenkonflikte, wenn MySQL mit Dual-Master konfiguriert ist
In letzter Zeit habe ich die MySQL-Datenbank unte...
Tabelle erstellen Tabelle erstellen Tabellenname ...
Vorwort Also habe ich diesen Blog geschrieben. Di...
#Docker-Suche #Docker-Pull-Portainer 1. Laden Sie...
In diesem Artikel sind die Schriftarten zusammeng...
Neben der Festlegung von Vorschriften für verschi...
Dieser Artikel stellt hauptsächlich ein Beispiel ...
Das neueste Tutorial zur Installation von MySQL 8...
Der vollständige Code lautet wie folgt : HTML Quel...
Mit REGELN kann die Art der inneren Rahmen der Ta...
Inhaltsverzeichnis 1. Array-Dekonstruktion 2. Obj...
Inhaltsverzeichnis 1. Einleitung 2. Einfaches Epo...
Beim Absenden eines Formulars kann es vorkommen, d...
Der wichtigste Schritt bei der Verpacken einer Id...
1. Daten initialisieren Tabelle löschen, wenn `te...