diff --git a/.gitignore b/.gitignore index 40d5d16..63c7931 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules components todo.TODO +/*.sublime-* diff --git a/src/angular-dragdrop.js b/src/angular-dragdrop.js index 5522936..d211bb3 100644 --- a/src/angular-dragdrop.js +++ b/src/angular-dragdrop.js @@ -122,7 +122,7 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti if (dragSettings.index > dropSettings.index) { temp = dragModelValue[dragSettings.index]; for (var i = dragSettings.index; i > dropSettings.index; i--) { - dropModelValue[i] = angular.copy(dropModelValue[i - 1]); + dropModelValue[i] = dragSettings.deepCopy ? angular.copy(dropModelValue[i - 1]) : dropModelValue[i - 1]; dropModelValue[i - 1] = {}; dropModelValue[i][dragSettings.direction] = 'left'; } @@ -130,7 +130,7 @@ var jqyoui = angular.module('ngDragDrop', []).service('ngDragDropService', ['$ti } else { temp = dragModelValue[dragSettings.index]; for (var i = dragSettings.index; i < dropSettings.index; i++) { - dropModelValue[i] = angular.copy(dropModelValue[i + 1]); + dropModelValue[i] = dragSettings.deepCopy ? angular.copy(dropModelValue[i + 1]) : dropModelValue[i + 1]; dropModelValue[i + 1] = {}; dropModelValue[i][dragSettings.direction] = 'right'; } diff --git a/test/spec/tests.js b/test/spec/tests.js index 04ef134..2fe4fdf 100644 --- a/test/spec/tests.js +++ b/test/spec/tests.js @@ -200,4 +200,70 @@ describe('Service: ngDragDropService', function() { timeout.flush(); expect(scope.list.map(function(item) { return item.title; }).join('')).toBe('NNLIIE'); }); + + it('should not deep copy dragged element by default', function(){ + var itemA = { 'title': 'A' }; + var itemB = { 'title': 'B' }; + var itemC = { 'title': 'C' }; + scope.list = [ + itemA, + itemB, + itemC + ]; + var copy = scope.list.slice(); + ngDragDropService.draggableScope = ngDragDropService.droppableScope = scope; + ngDragDropService.invokeDrop( + $('