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
Ich erwarte nicht, ein erfahrener Datenbankadmini...
1. Zusammengesetzter Primärschlüssel Der sogenann...
Was sind HTTP-Header HTTP ist eine Abkürzung für ...
Vorwort Je nach Projektbedarf wird Vue-Touch verw...
MySQL kann bei der Installation festgelegt werden...
1. Geschäftsszenario Ich habe kürzlich Entwicklun...
Problembeschreibung Als ich kürzlich ein Springbo...
Verwenden Sie das RPM-Installationspaket, um MySQ...
Bisher wurden die von uns verwendeten Images alle...
Tomcat greift auf das Projekt zu, normalerweise I...
Vorwort Heute werde ich Ihnen ein Holy-Grail-Layo...
1. Die Rolle der Klammern 1.1 Eckige Klammern [ ]...
Wenn Docker einen Container erstellt, verwendet e...
In diesem Artikelbeispiel wird der spezifische Co...
Die Installation, Konfiguration und Optimierung v...