Betrachten Sie die folgende Komponente Vorlage, ich versuche, die Fähigkeit zu erreichen, Listenelemente für eckiges Material 2 und einfache Li-Tag neu zu ordnen.mit HTML5 Drag & Drop mit eckigen Material 2 md-Liste
Diese Funktionalität funktioniert perfekt für li-Tag Tag aber nicht bei md-list-item
warum arbeiten ist das?
Meine Vorlage:
<md-nav-list>
<md-list-item *ngFor="let i of arr" draggable="true" (dragenter)="dragenter($event)" (dragstart)="dragstart($event)">
{{i}}
</md-list-item>
</md-nav-list>
<ul>
<li *ngFor="let i of arr" draggable="true" (dragenter)="dragenter($event)" (dragstart)="dragstart($event)">{{i}}</li>
</ul>
Called Funktionen:
source: any;
/**
* CHECKS IF ONE ELEMENT LIES BEFORE THE OTHER
*/
isbefore(a, b) {
if (a.parentNode == b.parentNode) {
for (var cur = a; cur; cur = cur.previousSibling) {
if (cur === b) {
return true;
}
}
}
return false;
}
/**
* LIST ITEM DRAP ENTERED
*/
dragenter($event) {
if (this.isbefore(this.source, $event.target)) {
$event.target.parentNode.insertBefore(this.source, $event.target); // insert before
}
else {
$event.target.parentNode.insertBefore(this.source, $event.target.nextSibling); //insert after
}
}
/**
* LIST ITEM DRAG STARTED
*/
dragstart($event) {
this.source = $event.target;
$event.dataTransfer.effectAllowed = 'move';
}
Screenshot der Ausgabe:
im Screenshot Wie sichtbar ist, wenn ich ziehen Sie einen beliebigen md-Liste - Der Browser beginnt mit dem Ziehen aller Inhalte, selbst vom übergeordneten Objekt Komponente.
, die das Hauptproblem gelöst, aber ist ihre sowieso ich könnte den Welleneffekt beibehalten, wenn umleiten und deaktivieren Sie es beim Ziehen? –