我看到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版本中没有,因此我将其关闭了)
答案 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());
});
}
};