Javascript 如何使用jquery ui sortable对使用材质设计创建的角度选项卡进行排序?

Javascript 如何使用jquery ui sortable对使用材质设计创建的角度选项卡进行排序?,javascript,jquery,angularjs,jquery-ui,angular-material,Javascript,Jquery,Angularjs,Jquery Ui,Angular Material,我试图创建一种使用jQueryUISortable进行排序(或排列)的方法。我尝试使用ui.sortable,但它不适用于md选项卡,因为我在尝试创建隔离作用域时收到一个错误,即多个指令 无论如何,我已经能够使用jquery ui sortable成功地对选项卡进行排序/排列。在这里共享它,以防将来有人需要它(因为在SO或任何其他网站上都没有关于它的结果)。我已经能够使用jquery ui sortable成功地对选项卡进行排序/排列。如果您有任何建议或改进,请随时分享 angular.mod

我试图创建一种使用jQueryUISortable进行排序(或排列)的方法。我尝试使用
ui.sortable
,但它不适用于
md选项卡
,因为我在尝试创建隔离作用域时收到一个错误,即多个指令


无论如何,我已经能够使用jquery ui sortable成功地对选项卡进行排序/排列。在这里共享它,以防将来有人需要它(因为在SO或任何其他网站上都没有关于它的结果)。

我已经能够使用jquery ui sortable成功地对选项卡进行排序/排列。如果您有任何建议或改进,请随时分享

angular.module('myApp',['ngMaterial','ngMessages']))
.controller('myController',函数($scope,$timeout){
$scope.items=['Item#1','Item#2','Item#3','Item#4','Item#5']
$scope.sort=函数(){
变量选项卡=$(“#可排序”).sortable({
“项目”:“md选项卡项目”,
“轴”:“x”,
“开始”:功能(事件、用户界面){
ui.item.startPos=ui.item.index();
},
“停止”:功能(事件、用户界面){
var oldIndex=ui.item.startPos;
var newIndex=ui.item.index();
var向后=旧指数>新指数;
$scope.items.splice(newIndex+(向后?0:1),0$scope.items[oldIndex]);
$scope.items.splice(oldIndex+(向后-1:0),1);
$timeout();
}
});
}
});

{{item}}

当指令作用域被销毁时,不要忘记销毁可排序表。我不知道空超时是为了什么,但你也应该清理一下。@TJ谢谢你的评论。空的
$timeout
是安全调用
$scope.apply()
的一种方法。这是必需的,因为摘要循环在拖放(jquery sortable)后确实会触发,但调用空的
$timeout
可以做到这一点(确保没有其他摘要循环运行)。关于你的第二个评论,你能给我更多的细节吗。我没有看到任何虫子?