I had rewritten the directive, it would be better than old version

This version full wrap jQuery UI Sortable Widget. All methods and events is available.

No longer used ngModel, use uiSortable directive like this:

    <tbody ui-sortable="myOptions">
       <tr ng-repeat="..."></tr>
    </tbody>

    $scope.myOptions = {
        options: { // optional
            appendTo: 'parent',
            //other options
            //jQuery UI Sortable Widget Options, the same below. http://api.jqueryui.com/sortable/#option
        },
        events: { //optional
            activate: function( event, ui ) {},
            // other events
            // jQuery UI Sortable Widget Events, http://api.jqueryui.com/sortable/#event
            // All events will be emit by AngularJS
        },
        methods: {}, //optional
            // extend jQuery UI Sortable Widget Methods to AngularJS after initialize. http://api.jqueryui.com/sortable/#methods
            // then you can invoke methods like this: $scope.myOptions.methods.serialize({ key: "sort" });
        items: [] // optional
            // ng-repeat items array reference. Notice that items will be get asynchronous in most cases.
    };