diff --git a/js/ext/angular/src/directive/ionicSideMenu.js b/js/ext/angular/src/directive/ionicSideMenu.js index 209405620b..953f133281 100644 --- a/js/ext/angular/src/directive/ionicSideMenu.js +++ b/js/ext/angular/src/directive/ionicSideMenu.js @@ -299,5 +299,23 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie }; } }; -}); +}) + + +.directive('menuNav', ['$ionicViewService', function($ionicViewService) { + return { + restrict: 'AC', + require: '^ionSideMenus', + link: function($scope, $element, $attr, sideMenuCtrl) { + $element.bind('click', function(){ + $ionicViewService.nextViewOptions({ + disableAnimate: true, + disableBack: true + }); + sideMenuCtrl.close(); + }); + } + }; +}]); + })(); diff --git a/js/ext/angular/src/service/ionicView.js b/js/ext/angular/src/service/ionicView.js index e1fabea1c6..0ba8085f15 100644 --- a/js/ext/angular/src/service/ionicView.js +++ b/js/ext/angular/src/service/ionicView.js @@ -124,6 +124,7 @@ angular.module('ionic.service.view', ['ui.router', 'ionic.service.platform']) currentView = viewHistory.currentView, backView = viewHistory.backView, forwardView = viewHistory.forwardView, + nextViewOptions = this.nextViewOptions(), rsp = { viewId: null, navAction: null, @@ -159,7 +160,7 @@ angular.module('ionic.service.view', ['ui.router', 'ionic.service.platform']) rsp.navAction = 'moveBack'; rsp.viewId = backView.viewId; //when going back, erase scrollValues - currentView.rememberedScrollValues = {}; + currentView.rememberedScrollValues = {}; if(backView.historyId === currentView.historyId) { // went back in the same history rsp.navDirection = 'back'; @@ -240,6 +241,12 @@ angular.module('ionic.service.view', ['ui.router', 'ionic.service.platform']) hist.stack.push(viewHistory.views[rsp.viewId]); } + if(nextViewOptions) { + if(nextViewOptions.disableAnimate) rsp.navDirection = null; + if(nextViewOptions.disableBack) viewHistory.views[rsp.viewId].backViewId = null; + this.nextViewOptions(null); + } + this.setNavViews(rsp.viewId); hist.cursor = viewHistory.currentView.index; @@ -389,6 +396,14 @@ angular.module('ionic.service.view', ['ui.router', 'ionic.service.platform']) return { historyId: 'root', scope: $rootScope }; }, + nextViewOptions: function(opts) { + if(arguments.length) { + this._nextOpts = opts; + } else { + return this._nextOpts; + } + }, + getRenderer: function(navViewElement, navViewAttrs, navViewScope) { var service = this; var registerData; diff --git a/js/ext/angular/test/sideMenu.html b/js/ext/angular/test/sideMenu.html index 69adfd179d..5663d56dd0 100644 --- a/js/ext/angular/test/sideMenu.html +++ b/js/ext/angular/test/sideMenu.html @@ -2,21 +2,21 @@ Side Menus - - - +
+ + -
- +
+

Slide me

- +
Hello @@ -38,8 +38,9 @@ + -
+

Right

@@ -50,29 +51,27 @@ + +
diff --git a/js/ext/angular/test/sideMenu2.html b/js/ext/angular/test/sideMenu2.html index d05ef55e0e..fdf105993f 100644 --- a/js/ext/angular/test/sideMenu2.html +++ b/js/ext/angular/test/sideMenu2.html @@ -1,24 +1,22 @@ - Side Menus + Side Menus2 -
- -
+ + +