Permalink
Browse files
fix(cellNav): Don't setup when directive not there
The cellNav feature was attaching logic to render containers and grid cells despite the uiGridCellnav directive not being on the parent grid component. This was causing exception to be thrown during scroll events. This change looks for the cellNav controller (which is simply empty) and bails before attaching logic if the controller is not present. Also added tests to cover the exceptions that were occuring. Fixes #2128
- Loading branch information
Showing
with
41 additions
and 6 deletions.
| @@ -0,0 +1,26 @@ | ||
| describe('ui.grid.cellNav directive', function () { | ||
| var $scope, $compile, elm, uiGridConstants; | ||
|
|
||
| beforeEach(module('ui.grid.cellNav')); | ||
|
|
||
| beforeEach(inject(function (_$rootScope_, _$compile_, _uiGridConstants_) { | ||
| $scope = _$rootScope_; | ||
| $compile = _$compile_; | ||
| uiGridConstants = _uiGridConstants_; | ||
|
|
||
| $scope.gridOpts = { | ||
| data: [{ name: 'Bob' }] | ||
| }; | ||
| })); | ||
|
|
||
| it('should not throw exceptions when scrolling when a grid does NOT have the ui-grid-cellNav directive', function () { | ||
| elm = angular.element('<div ui-grid="gridOpts"></div>'); | ||
|
|
||
| $compile(elm)($scope); | ||
| $scope.$digest(); | ||
|
|
||
| expect(function () { | ||
| $scope.$broadcast(uiGridConstants.events.GRID_SCROLL, {}); | ||
| }).not.toThrow(); | ||
| }); | ||
| }); |