diff --git a/js/angular/controller/viewController.js b/js/angular/controller/viewController.js index 5020af7e747..076e061df5c 100644 --- a/js/angular/controller/viewController.js +++ b/js/angular/controller/viewController.js @@ -40,7 +40,7 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher) // add listeners for when this view changes $scope.$on('$ionicView.beforeEnter', self.beforeEnter); $scope.$on('$ionicView.afterEnter', afterEnter); - $scope.$on('$ionicView.beforeLeave', deregisterObservers); + $scope.$on('$ionicView.beforeLeave', deregisterFns); }; self.beforeEnter = function(ev, transData) { @@ -72,7 +72,7 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher) }); // make sure any existing observers are cleaned up - deregisterObservers(); + deregisterFns(); } }; @@ -89,14 +89,14 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher) } if (isDefined($attrs.hideBackButton)) { - deregisters.push($attrs.$observe('hideBackButton', function() { - navViewCtrl.showBackButton(!attrTrue('hideBackButton')); + deregisters.push($scope.$watch($attrs.hideBackButton, function(val) { + navViewCtrl.showBackButton(!val); })); } if (isDefined($attrs.hideNavBar)) { - deregisters.push($attrs.$observe('hideNavBar', function() { - navViewCtrl.showBar(!attrTrue('hideNavBar')); + deregisters.push($scope.$watch($attrs.hideNavBar, function(val) { + navViewCtrl.showBar(!val); })); } @@ -104,7 +104,7 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher) } - function deregisterObservers() { + function deregisterFns() { // remove all existing $attrs.$observe's for (var x = 0; x < deregisters.length; x++) { deregisters[x](); diff --git a/test/unit/angular/directive/view.unit.js b/test/unit/angular/directive/view.unit.js index d2ebc755a47..5c4e53e0fd2 100644 --- a/test/unit/angular/directive/view.unit.js +++ b/test/unit/angular/directive/view.unit.js @@ -142,7 +142,7 @@ describe('ionView directive', function() { })); it('should only observe hideNavBar attr after afterEnter and before beforeLeave', inject(function($rootScope) { - var el = setup('hide-nav-bar="{{ hide }}"', {hide: false}); + var el = setup('hide-nav-bar="hide"', {hide: false}); $rootScope.$broadcast('$ionicView.beforeEnter', {}); var spy = el.data('$ionNavViewController').showBar; expect(spy).not.toHaveBeenCalled(); @@ -165,7 +165,7 @@ describe('ionView directive', function() { })); it('should only observe hideBackButton attr after afterEnter and before beforeLeave', inject(function($rootScope) { - var el = setup('hide-back-button="{{ hide }}"', {hide: false}); + var el = setup('hide-back-button="hide"', {hide: false}); $rootScope.$broadcast('$ionicView.beforeEnter', {}); var spy = el.data('$ionNavViewController').showBackButton; expect(spy).not.toHaveBeenCalled();