mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
refactor(sideMenuController): deregister backbutton on $destroy
This commit is contained in:
5
js/angular/controller/sideMenuController.js
vendored
5
js/angular/controller/sideMenuController.js
vendored
@@ -50,5 +50,8 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform) {
|
||||
var deregisterInstance = $ionicSideMenuDelegate._registerInstance(
|
||||
this, $attrs.delegateHandle
|
||||
);
|
||||
$scope.$on('$destroy', deregisterInstance);
|
||||
$scope.$on('$destroy', function() {
|
||||
deregisterInstance();
|
||||
deregisterBackButtonAction();
|
||||
});
|
||||
}]);
|
||||
|
||||
@@ -34,4 +34,20 @@ describe('$ionicSideMenus controller', function() {
|
||||
ctrl.$scope.$apply();
|
||||
expect(deregSpy).toHaveBeenCalled();
|
||||
}));
|
||||
|
||||
it('should deregister back button action on $destroy', inject(function($ionicPlatform) {
|
||||
var openAmount = 0;
|
||||
var deregSpy = jasmine.createSpy('deregister');
|
||||
spyOn($ionicPlatform, 'registerBackButtonAction').andReturn(deregSpy);
|
||||
|
||||
var ctrl = setup();
|
||||
spyOn(ctrl, 'getOpenAmount').andCallFake(function() { return openAmount; });
|
||||
|
||||
expect($ionicPlatform.registerBackButtonAction).not.toHaveBeenCalled();
|
||||
openAmount = 1;
|
||||
ctrl.$scope.$apply();
|
||||
expect(deregSpy).not.toHaveBeenCalled();
|
||||
ctrl.$scope.$destroy();
|
||||
expect(deregSpy).toHaveBeenCalled();
|
||||
}));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user