diff --git a/js/angular/service/viewService.js b/js/angular/service/viewService.js index cc25cc917c..92e5c114a3 100644 --- a/js/angular/service/viewService.js +++ b/js/angular/service/viewService.js @@ -9,10 +9,36 @@ IonicModule $log.warn('$ionicViewService' + oldMethod + ' is deprecated, please use $ionicHistory' + newMethod + ' instead: http://ionicframework.com/docs/nightly/api/service/$ionicHistory/'); } - //Windows: no hide method available + // always reset the keyboard state when change stage + $rootScope.$on('$stateChangeStart', function(){ + //Windows: no hide method available if (ionic.keyboard.hide) { ionic.keyboard.hide(); } + }); + + $rootScope.$on('viewState.changeHistory', function(e, data) { + if(!data) return; + + var hist = (data.historyId ? $rootScope.$viewHistory.histories[ data.historyId ] : null ); + if(hist && hist.cursor > -1 && hist.cursor < hist.stack.length) { + // the history they're going to already exists + // go to it's last view in its stack + var view = hist.stack[ hist.cursor ]; + return view.go(data); + } + + // this history does not have a URL, but it does have a uiSref + // figure out its URL from the uiSref + if(!data.url && data.uiSref) { + data.url = $state.href(data.uiSref); + } + + if(data.url) { + // don't let it start with a #, messes with $location.url() + if(data.url.indexOf('#') === 0) { + data.url = data.url.replace('#', ''); + } warn('', ''); var methodsMap = {