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 bin schon vor langer Zeit mit CSS in Berührun...
1. Nach der Installation von MySQL 5.6 kann es ni...
Ich werde nicht viel Unsinn erzählen, schauen wir...
Was ist Routing? Unter Routing versteht man die Ü...
Professionelles Webdesign ist komplex und zeitint...
Inhaltsverzeichnis Installieren Sie den Vim-Plugi...
1. Erstellen Sie einen Runner-Container mk@mk-pc:...
Aus diesem Grund haben wir eine Auswahl von 30 Kom...
Warum optimieren: Beim Start des eigentlichen Pro...
Inhaltsverzeichnis 01 Einführung in YAML-Dateien ...
Dieser Artikel zeichnet die Installations- und Ko...
1. Laden Sie das Repository-Image herunter Docker...
Um die Speicherung und den Zugriff auf Dateien zu...
1. Docker-Installation und -Einstellungen #Instal...
ARGB ist ein Farbmodus, also der RGB-Farbmodus mi...