@@ -282,18 +282,32 @@ angular.module('ui.sortable', [])
282
282
ui . item . sortable [ key ] = undefined ;
283
283
} ) ;
284
284
} ,
285
+ _connectedSortables : [ ] ,
285
286
_getElementContext : function ( element ) {
286
- return getElementContext ( this . _connectedSortables || [ ] , element ) ;
287
+ return getElementContext ( this . _connectedSortables , element ) ;
287
288
}
288
289
} ;
289
290
} ;
290
291
291
292
callbacks . activate = function ( e , ui ) {
293
+ var isSourceContext = ui . item . sortable . source === element ;
294
+ var savedNodesOrigin = isSourceContext ?
295
+ ui . item . sortable . sourceList :
296
+ element ;
297
+ var elementContext = {
298
+ element : element ,
299
+ scope : scope ,
300
+ isSourceContext : isSourceContext ,
301
+ savedNodesOrigin : savedNodesOrigin
302
+ } ;
303
+ // save the directive's scope so that it is accessible from ui.item.sortable
304
+ ui . item . sortable . _connectedSortables . push ( elementContext ) ;
305
+
292
306
// We need to make a copy of the current element's contents so
293
307
// we can restore it after sortable has messed it up.
294
308
// This is inside activate (instead of start) in order to save
295
309
// both lists when dragging between connected lists.
296
- savedNodes = element . contents ( ) ;
310
+ savedNodes = savedNodesOrigin . contents ( ) ;
297
311
298
312
// If this list has a placeholder (the connected lists won't),
299
313
// don't inlcude it in saved nodes.
@@ -302,16 +316,6 @@ angular.module('ui.sortable', [])
302
316
var excludes = getPlaceholderExcludesludes ( element , placeholder ) ;
303
317
savedNodes = savedNodes . not ( excludes ) ;
304
318
}
305
-
306
- // save the directive's scope so that it is accessible from ui.item.sortable
307
- var connectedSortables = ui . item . sortable . _connectedSortables || [ ] ;
308
-
309
- connectedSortables . push ( {
310
- element : element ,
311
- scope : scope
312
- } ) ;
313
-
314
- ui . item . sortable . _connectedSortables = connectedSortables ;
315
319
} ;
316
320
317
321
callbacks . update = function ( e , ui ) {
@@ -345,7 +349,8 @@ angular.module('ui.sortable', [])
345
349
// That way it will be garbage collected.
346
350
savedNodes = savedNodes . not ( sortingHelper ) ;
347
351
}
348
- savedNodes . appendTo ( element ) ;
352
+ var elementContext = ui . item . sortable . _getElementContext ( element ) ;
353
+ savedNodes . appendTo ( elementContext . savedNodesOrigin ) ;
349
354
350
355
// If this is the target connected list then
351
356
// it's safe to clear the restored nodes since:
@@ -394,7 +399,8 @@ angular.module('ui.sortable', [])
394
399
// That way it will be garbage collected.
395
400
savedNodes = savedNodes . not ( sortingHelper ) ;
396
401
}
397
- savedNodes . appendTo ( element ) ;
402
+ var elementContext = ui . item . sortable . _getElementContext ( element ) ;
403
+ savedNodes . appendTo ( elementContext . savedNodesOrigin ) ;
398
404
}
399
405
400
406
// It's now safe to clear the savedNodes
0 commit comments