2016-01-26 23 views
1

我使用angular ui-sortable通過拖放來訂購商品。被排序的項目也會附加一個點擊事件。在Firefox中,放棄其中一個項目會觸發點擊事件。在我測試過的所有其他瀏覽器中,並沒有。angular ui-sortable:在Firefox中停止點擊事件

Here's一個簡單的例子(檢查控制檯日誌):

HTML

<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> 

CSS

.box { 
    width: 100px; 
    height: 100px; 
    background: #ff0000; 
    margin: 8px; 
} 

JS

angular.module('app', ['ui.sortable']) 
    .controller('ctrl', [function() { 
    var vm = this; 

    vm.sortableOptions = { 
     stop: function (e) { 

     } 
    } 

    vm.items = [ 
     {}, 
     {}, 
     {}, 
     {} 
    ]; 

    vm.log = function() { 
     console.log('clicked'); 
    } 
}]); 

我想這不會發生。調用Event.preventDefault()不會像我希望的那樣工作(可能是因爲它是一個角度單擊事件)。

我當然可以在停止回調中設置某種標誌(它似乎總是在點擊處理程序之前觸發),但我更喜歡更清潔的解決方案,因爲這可能會有點難以跟蹤。

+1

你看到了[this ffox specific stack post](http://stackoverflow.com/a/12694427/4747123)我假設?看起來像是同樣的問題 - 並且表明你的'魔法標誌'是(不幸的)答案。 – bri

+0

@bri不,我錯過了一些如何,謝謝你的鏈接 – aw04

回答

5

用途:

vm.sortableOptions = { 
    helper: 'clone' 
}; 

它告訴模塊用於拖動的克隆,也禁止解僱的所有事件。我檢查了火狐瀏覽器,它完美的工作。

+0

這是完美的,謝謝 – aw04

相關問題