Я работаю над реализацией жесткого жесткого диска типа iOS в строках таблицы HTML. Например, прокрутка влево на Site11
превратит его из стандартной строки:
в удаляемую строку:
У меня есть эта функциональность, работающая с директивой ng-swipe-left
. Однако у меня также есть директива ng-click
для каждой строки, которая переходит к другому представлению приложения. В настоящее время оба события запускаются, когда я выполняю салфетки в строке, за исключением случаев, когда салфетки заканчиваются на самом тексте "Site11", а не в другом месте внутри строки. Например, этот жест будет запускать как обработчики ng-click
, так и ng-swipe-left
:
но этот жест вызовет только обработчик ng-swipe-left
:
Как я могу предотвратить выполнение обработчика ng-click
, если в строке выполняется салфетка, независимо от того, где заканчивается салфетка?
Вот суть моей структуры HTML, которая определяет каждую строку:
<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>
Кнопка удаления определяется внутри директивы list-item
; это видно только в том случае, если его идентификатор соответствует свойству swipeDeleteItemId
на контроллере:
<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>
Я должен упомянуть, что я только пробовал это в настольных версиях Chrome и IE11 - я предполагаю щелчок и перетаскиваю из регистров мыши одинаково, чтобы проведите по экрану на мобильном устройстве.