|
199 | 199 | compile: function() {
|
200 | 200 | return {
|
201 | 201 | post: function ($scope, $elm, $attrs, uiGridCtrl) {
|
202 |
| - var grid = uiGridCtrl.grid; |
| 202 | + var grid = uiGridCtrl.grid, |
| 203 | + resizerScopes = [], |
| 204 | + resizers = []; |
203 | 205 |
|
204 | 206 | if (grid.options.enableColumnResizing) {
|
205 | 207 | var columnResizerElm = $templateCache.get('ui-grid/columnResizer');
|
|
211 | 213 | rtlMultiplier = -1;
|
212 | 214 | }
|
213 | 215 |
|
214 |
| - var displayResizers = function(){ |
| 216 | + var displayResizers = function () { |
215 | 217 |
|
216 |
| - // remove any existing resizers. |
217 |
| - var resizers = $elm[0].getElementsByClassName('ui-grid-column-resizer'); |
218 |
| - for ( var i = 0; i < resizers.length; i++ ){ |
219 |
| - angular.element(resizers[i]).remove(); |
220 |
| - } |
| 218 | + removeResizers(); |
221 | 219 |
|
222 | 220 | // get the target column for the left resizer
|
223 | 221 | var otherCol = uiGridResizeColumnsService.findTargetCol($scope.col, 'left', rtlMultiplier);
|
|
227 | 225 | if (otherCol && renderContainer.visibleColumnCache.indexOf($scope.col) !== 0 && otherCol.colDef.enableColumnResizing !== false) {
|
228 | 226 | var resizerLeft = angular.element(columnResizerElm).clone();
|
229 | 227 | resizerLeft.attr('position', 'left');
|
230 |
| - |
231 | 228 | $elm.prepend(resizerLeft);
|
232 |
| - $compile(resizerLeft)($scope); |
| 229 | + $compile(resizerLeft)(resizerScopes[resizerScopes.push($scope.$new()) - 1]); |
233 | 230 | }
|
234 | 231 |
|
235 | 232 | // Don't append the right resizer if this column has resizing disabled
|
236 | 233 | if ($scope.col.colDef.enableColumnResizing !== false) {
|
237 | 234 | var resizerRight = angular.element(columnResizerElm).clone();
|
238 | 235 | resizerRight.attr('position', 'right');
|
239 |
| - |
240 | 236 | $elm.append(resizerRight);
|
241 |
| - $compile(resizerRight)($scope); |
| 237 | + $compile(resizerRight)(resizerScopes[resizerScopes.push($scope.$new()) - 1]); |
| 238 | + } |
| 239 | + }; |
| 240 | + |
| 241 | + var removeResizers = function() { |
| 242 | + // remove any existing resizer scopes. |
| 243 | + for (var x = resizerScopes.length - 1; x >= 0; x--) { |
| 244 | + resizerScopes[x].$destroy(); |
| 245 | + resizerScopes.splice(x); |
| 246 | + } |
| 247 | + // remove any existing resizer elements. |
| 248 | + resizers = $elm[0].getElementsByClassName('ui-grid-column-resizer'); |
| 249 | + for (var i = resizers.length - 1; i >= 0; i--) { |
| 250 | + angular.element(resizers[i]).remove(); |
242 | 251 | }
|
243 | 252 | };
|
244 | 253 |
|
|
250 | 259 |
|
251 | 260 | var dataChangeDereg = grid.registerDataChangeCallback( waitDisplay, [uiGridConstants.dataChange.COLUMN] );
|
252 | 261 |
|
253 |
| - $scope.$on( '$destroy', dataChangeDereg ); |
| 262 | + $scope.$on( '$destroy',function() { |
| 263 | + dataChangeDereg(); |
| 264 | + removeResizers(); |
| 265 | + }); |
254 | 266 | }
|
255 | 267 | }
|
256 | 268 | };
|
|
0 commit comments