Skip to content

Commit 053bc04

Browse files
committed
refactor(sideMenuController): deregister backbutton on $destroy
1 parent 1010355 commit 053bc04

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Diff for: js/angular/controller/sideMenuController.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,8 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform) {
5050
var deregisterInstance = $ionicSideMenuDelegate._registerInstance(
5151
this, $attrs.delegateHandle
5252
);
53-
$scope.$on('$destroy', deregisterInstance);
53+
$scope.$on('$destroy', function() {
54+
deregisterInstance();
55+
deregisterBackButtonAction();
56+
});
5457
}]);

Diff for: test/unit/angular/controller/sideMenuController.unit.js

+16
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,20 @@ describe('$ionicSideMenus controller', function() {
3434
ctrl.$scope.$apply();
3535
expect(deregSpy).toHaveBeenCalled();
3636
}));
37+
38+
it('should deregister back button action on $destroy', inject(function($ionicPlatform) {
39+
var openAmount = 0;
40+
var deregSpy = jasmine.createSpy('deregister');
41+
spyOn($ionicPlatform, 'registerBackButtonAction').andReturn(deregSpy);
42+
43+
var ctrl = setup();
44+
spyOn(ctrl, 'getOpenAmount').andCallFake(function() { return openAmount; });
45+
46+
expect($ionicPlatform.registerBackButtonAction).not.toHaveBeenCalled();
47+
openAmount = 1;
48+
ctrl.$scope.$apply();
49+
expect(deregSpy).not.toHaveBeenCalled();
50+
ctrl.$scope.$destroy();
51+
expect(deregSpy).toHaveBeenCalled();
52+
}));
3753
});

0 commit comments

Comments
 (0)