@@ -13,8 +13,8 @@ angular.module('ui.sortable', [])
13
13
return {
14
14
require : '?ngModel' ,
15
15
scope : {
16
- ngModel : '=ngModel ' ,
17
- uiSortable : '=uiSortable '
16
+ ngModel : '=' ,
17
+ uiSortable : '='
18
18
} ,
19
19
link : function ( scope , element , attrs , ngModel ) {
20
20
var savedNodes ;
@@ -49,6 +49,18 @@ angular.module('ui.sortable', [])
49
49
return ( / l e f t | r i g h t / ) . test ( item . css ( 'float' ) ) || ( / i n l i n e | t a b l e - c e l l / ) . test ( item . css ( 'display' ) ) ;
50
50
}
51
51
52
+ function getElementScope ( elementScopes , element ) {
53
+ var result = null ;
54
+ for ( var i = 0 ; i < elementScopes . length ; i ++ ) {
55
+ var x = elementScopes [ i ] ;
56
+ if ( x . element [ 0 ] === element [ 0 ] ) {
57
+ result = x . scope ;
58
+ break ;
59
+ }
60
+ }
61
+ return result ;
62
+ }
63
+
52
64
function afterStop ( e , ui ) {
53
65
ui . item . sortable . _destroy ( ) ;
54
66
}
@@ -128,7 +140,7 @@ angular.module('ui.sortable', [])
128
140
} ;
129
141
} ;
130
142
131
- callbacks . activate = function ( /* e, ui*/ ) {
143
+ callbacks . activate = function ( e , ui ) {
132
144
// We need to make a copy of the current element's contents so
133
145
// we can restore it after sortable has messed it up.
134
146
// This is inside activate (instead of start) in order to save
@@ -153,10 +165,20 @@ angular.module('ui.sortable', [])
153
165
// exact match with the placeholder's class attribute to handle
154
166
// the case that multiple connected sortables exist and
155
167
// the placehoilder option equals the class of sortable items
156
- var excludes = element . find ( '[class="' + phElement . attr ( 'class' ) + '"]' ) ;
168
+ var excludes = element . find ( '[class="' + phElement . attr ( 'class' ) + '"]:not([ng-repeat], [data-ng-repeat]) ' ) ;
157
169
158
170
savedNodes = savedNodes . not ( excludes ) ;
159
171
}
172
+
173
+ // save the directive's scope so that it is accessible from ui.item.sortable
174
+ var connectedSortables = ui . item . sortable . _connectedSortables || [ ] ;
175
+
176
+ connectedSortables . push ( {
177
+ element : element ,
178
+ scope : scope
179
+ } ) ;
180
+
181
+ ui . item . sortable . _connectedSortables = connectedSortables ;
160
182
} ;
161
183
162
184
callbacks . update = function ( e , ui ) {
@@ -167,8 +189,9 @@ angular.module('ui.sortable', [])
167
189
ui . item . sortable . dropindex = ui . item . index ( ) ;
168
190
var droptarget = ui . item . parent ( ) ;
169
191
ui . item . sortable . droptarget = droptarget ;
170
- var attr = droptarget . attr ( 'ng-model' ) || droptarget . attr ( 'data-ng-model' ) ;
171
- ui . item . sortable . droptargetModel = droptarget . scope ( ) . $eval ( attr ) ;
192
+
193
+ var droptargetScope = getElementScope ( ui . item . sortable . _connectedSortables , droptarget ) ;
194
+ ui . item . sortable . droptargetModel = droptargetScope . ngModel ;
172
195
173
196
// Cancel the sort (let ng-repeat do the sort for us)
174
197
// Don't cancel if this is the received list because it has
0 commit comments