Angular Sortable事件的工作方式与使用JQuery不同

时间:2014-08-21 17:41:28

标签: javascript jquery angularjs jquery-ui sorting

我看到JQuery Sortable和Angular Sortable中的可排序事件存在差异,尽管我的理解是Angular事件和选项应与JQuery相同:

"所有jQueryUI Sortable选项都可以通过指令传递。" https://github.com/angular-ui/ui-sortable

以下显示了jquery可排序。拖动项目时,警报会显示已删除项目的索引。 http://jsfiddle.net/L7jemdbh/

$(".sort-list-horizontal").sortable({containment: 'parent', tolerance: "pointer" })
    .on( "sortupdate", function( event, ui ) { alert(ui.item.index()); } );

使用Angular的相同排序具有相同的警报,但它会在项目被删除之前显示项目的索引。 http://jsfiddle.net/zobgawqt/

$scope.sortableOptions = {
    tolerance: 'pointer',
    update: function(event, ui) { alert(ui.item.index()); }
};    

为什么Angular版本不同?如何在删除后找到索引?

(我还注意到包含选项在jquery版本中有效,但在Angular版本中没有,因此我将其关闭了)

1 个答案:

答案 0 :(得分:2)

我不知道Angular Sortable如何处理事件更新,但确保在angularjs中调用所有更新时运行过程的一种方法是将其包装在$timeout中。

<强> FORKED FIDDLE

变化:

$scope.sortableOptions = {
    tolerance: 'pointer',
    update: function(event, ui) { alert(ui.item.index()); }
}; 

$scope.sortableOptions = {
    tolerance: 'pointer',
    update: function(event, ui) { 
       $timeout(function(){
          alert(ui.item.index()); 
       });

    }
};