我使用angular ui-sortable通过拖放订购商品。正在排序的项目也附加了一个点击事件。在firefox中,丢弃其中一个项会触发click事件。在我测试的所有其他浏览器中,它没有。
Here's一个简单的例子(检查控制台日志):
HTML
connection
CSS
<div ng-app="app" ng-controller="ctrl as vm">
<div ui-sortable="vm.sortableOptions" ng-model="vm.items">
<div ng-repeat="item in vm.items">
<a href ng-click="vm.log()">
<div class="box"></div>
</a>
</div>
</div>
</div>
JS
.box {
width: 100px;
height: 100px;
background: #ff0000;
margin: 8px;
}
我希望这不会发生。调用Event.preventDefault()不起作用,因为我希望它(可能是因为它是一个有角度的点击事件)。
我当然可以在停止回调中设置某种标志(它似乎总是在点击处理程序之前触发)但是我更喜欢更清洁的解决方案,因为这可能会让人有点难以跟踪。 / p>
答案 0 :(得分:6)
使用:
vm.sortableOptions = {
helper: 'clone'
};
它告诉模块使用克隆进行拖动,这也会禁用所有触发的事件。我在Firefox中查看过它完美无缺。