Ich arbeite daran, eine iOS-ähnliche Wischgeste zum Löschen auf HTML-Tabellenzeilen zu implementieren. Zum Beispiel werden eine nach links Swipe auf Site11
drehen aus einer Standardreihe:Verhindern, dass der Finger über den ng-click-Handler ausgelöst wird
in eine Lösch-able Reihe:
Ich habe diese Funktionalität mit der ng-swipe-left
Richtlinie Arbeits . Allerdings habe ich auch eine ng-click
Direktive für jede Zeile, die zu einer anderen Ansicht der Anwendung navigiert. Momentan werden beide Ereignisse ausgelöst, wenn ich in einer Zeile wähle, außer, wenn der Swipe auf dem Text "Site11" endet, im Gegensatz zu irgendwo anders in der Zeile. Zum Beispiel löst diese Geste sowohl die ng-click
und die ng-swipe-left
Handler:
aber diese Geste wird nur ausgelöst, die ng-swipe-left
Handler:
Wie kann ich die ng-click
verhindern Handler ausgelöst wird, wenn ein Swipe in der Zeile ausgeführt wird, unabhängig davon, wo der Swipe endet?
Hier ist der Kern meiner HTML-Struktur, die jede Zeile definiert:
<tr ng-repeat="item in items">
<td ng-click="openDetailPane()"
ng-swipe-left="$parent.swipeDeleteItemId = item.Id"
ng-swipe-right="$parent.swipeDeleteItemId = 'none'">
<div list-item></div>
</td>
<td>
<i class="fa fa-angle-right fa-2x" />
<span>{{item.ChildCount}}</span>
</td>
</tr>
Die Löschtaste in der list-item
Richtlinie definiert ist; es ist nur sichtbar, wenn die ID der swipeDeleteItemId
Eigenschaft auf dem Controller passt:
<div class="list-item">
<span>{{item.Name}}</span>
<div ng-class="{true: 'is-visible', false: ''}[item.Id === swipeDeleteItemId]">
<div class="delete-item-swipe-button"
ng-mousedown="$event.stopPropagation();"
ng-click="$event.stopPropagation();">Delete</div>
</div>
</div>
Ich sollte erwähnen, dass ich nur diese in den Desktop versucht haben Versionen von Chrome und IE11 - Ich gehe davon aus ein Klicken und Ziehen von Eine Maus registriert sich identisch mit einem Swipe auf einem mobilen Gerät.
Was ist mit Websites, die sowohl auf mobilen Geräten als auch auf Desktops arbeiten müssen? Scheint so, als ob es immer noch keine großartige Lösung gibt. –