From 273aea53a2a22b6b68dc5eb615457cbb77be6bbb Mon Sep 17 00:00:00 2001 From: "Portugal, Marcelo" Date: Mon, 6 Mar 2017 10:42:00 -0500 Subject: [PATCH] Revert "fix(enableColumnResizing): enableColumnResizing accumulates watchers with each table $digest cycle (#5933)" This reverts commit 954bebad33f6a4442658db1a100687a9cd4574cb. --- .../js/ui-grid-column-resizer.js | 36 +++++++------------ .../resize-columns/test/resizeColumns.spec.js | 10 ------ 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/src/features/resize-columns/js/ui-grid-column-resizer.js b/src/features/resize-columns/js/ui-grid-column-resizer.js index c4fbf6d176..1c2c27759d 100644 --- a/src/features/resize-columns/js/ui-grid-column-resizer.js +++ b/src/features/resize-columns/js/ui-grid-column-resizer.js @@ -199,9 +199,7 @@ compile: function() { return { post: function ($scope, $elm, $attrs, uiGridCtrl) { - var grid = uiGridCtrl.grid, - resizerScopes = [], - resizers = []; + var grid = uiGridCtrl.grid; if (grid.options.enableColumnResizing) { var columnResizerElm = $templateCache.get('ui-grid/columnResizer'); @@ -213,9 +211,13 @@ rtlMultiplier = -1; } - var displayResizers = function () { + var displayResizers = function(){ - removeResizers(); + // remove any existing resizers. + var resizers = $elm[0].getElementsByClassName('ui-grid-column-resizer'); + for ( var i = 0; i < resizers.length; i++ ){ + angular.element(resizers[i]).remove(); + } // get the target column for the left resizer var otherCol = uiGridResizeColumnsService.findTargetCol($scope.col, 'left', rtlMultiplier); @@ -225,29 +227,18 @@ if (otherCol && renderContainer.visibleColumnCache.indexOf($scope.col) !== 0 && otherCol.colDef.enableColumnResizing !== false) { var resizerLeft = angular.element(columnResizerElm).clone(); resizerLeft.attr('position', 'left'); + $elm.prepend(resizerLeft); - $compile(resizerLeft)(resizerScopes[resizerScopes.push($scope.$new()) - 1]); + $compile(resizerLeft)($scope); } // Don't append the right resizer if this column has resizing disabled if ($scope.col.colDef.enableColumnResizing !== false) { var resizerRight = angular.element(columnResizerElm).clone(); resizerRight.attr('position', 'right'); - $elm.append(resizerRight); - $compile(resizerRight)(resizerScopes[resizerScopes.push($scope.$new()) - 1]); - } - }; - var removeResizers = function() { - // remove any existing resizer scopes. - for (var x = resizerScopes.length - 1; x >= 0; x--) { - resizerScopes[x].$destroy(); - resizerScopes.splice(x); - } - // remove any existing resizer elements. - resizers = $elm[0].getElementsByClassName('ui-grid-column-resizer'); - for (var i = resizers.length - 1; i >= 0; i--) { - angular.element(resizers[i]).remove(); + $elm.append(resizerRight); + $compile(resizerRight)($scope); } }; @@ -259,10 +250,7 @@ var dataChangeDereg = grid.registerDataChangeCallback( waitDisplay, [uiGridConstants.dataChange.COLUMN] ); - $scope.$on( '$destroy',function() { - dataChangeDereg(); - removeResizers(); - }); + $scope.$on( '$destroy', dataChangeDereg ); } } }; diff --git a/src/features/resize-columns/test/resizeColumns.spec.js b/src/features/resize-columns/test/resizeColumns.spec.js index 2528ee4e9b..21ee525327 100644 --- a/src/features/resize-columns/test/resizeColumns.spec.js +++ b/src/features/resize-columns/test/resizeColumns.spec.js @@ -93,16 +93,6 @@ describe('ui.grid.resizeColumns', function () { }); }); - describe('destroying header cell',function(){ - it('should have 0 watchers after destroy',function(){ - var secondCol = $(grid).find('[ui-grid-header-cell]:nth-child(1)'); - secondCol.parent().scope().$destroy(); - var numWatchers = secondCol.scope().$$watchers.length; - - expect(numWatchers).toEqual(0); - }); - }); - describe('setting enableColumnResizing to false', function () { it('should result in no resizer elements being attached to the column', function () { $scope.gridOpts.enableColumnResizing = false;