From 8640924b44c5cbf851ae0cf1bbe4a8807af83d11 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Sun, 30 Nov 2014 21:36:45 -0600 Subject: [PATCH] fix(view): digest view scope before transition --- js/angular/controller/viewController.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/js/angular/controller/viewController.js b/js/angular/controller/viewController.js index 979ec1fb35..15d55a52d1 100644 --- a/js/angular/controller/viewController.js +++ b/js/angular/controller/viewController.js @@ -4,14 +4,16 @@ IonicModule '$element', '$attrs', '$compile', + '$rootScope', '$ionicViewSwitcher', -function($scope, $element, $attrs, $compile, $ionicViewSwitcher) { +function($scope, $element, $attrs, $compile, $rootScope, $ionicViewSwitcher) { var self = this; var navElementHtml = {}; var navViewCtrl; var navBarDelegateHandle; var hasViewHeaderBar; var deregisters = []; + var viewTitle; var deregIonNavBarInit = $scope.$on('ionNavBar.init', function(ev, delegateHandle){ // this view has its own ion-nav-bar, remember the navBarDelegateHandle for this view @@ -41,7 +43,8 @@ function($scope, $element, $attrs, $compile, $ionicViewSwitcher) { if (transData && !transData.viewNotified) { transData.viewNotified = true; - var viewTitle = isDefined($attrs.viewTitle) ? $attrs.viewTitle : $attrs.title; + if (!$rootScope.$$phase) $scope.$digest(); + viewTitle = isDefined($attrs.viewTitle) ? $attrs.viewTitle : $attrs.title; var buttons = {}; for (var n in navElementHtml) { @@ -73,9 +76,8 @@ function($scope, $element, $attrs, $compile, $ionicViewSwitcher) { // but also deregister the observe before it leaves var viewTitleAttr = isDefined($attrs.viewTitle) && 'viewTitle' || isDefined($attrs.title) && 'title'; if (viewTitleAttr) { - deregisters.push($attrs.$observe(viewTitleAttr, function(val) { - navViewCtrl.title(val); - })); + titleUpdate($attrs[viewTitleAttr]); + deregisters.push($attrs.$observe(viewTitleAttr, titleUpdate)); } if (isDefined($attrs.hideBackButton)) { @@ -92,6 +94,14 @@ function($scope, $element, $attrs, $compile, $ionicViewSwitcher) { } + function titleUpdate(newTitle) { + if (isDefined(newTitle) && newTitle !== viewTitle) { + viewTitle = newTitle; + navViewCtrl.title(viewTitle); + } + } + + function deregisterFns() { // remove all existing $attrs.$observe's for (var x = 0; x < deregisters.length; x++) {