我正在使用Ionic& amp; AngularJS并使用状态来管理视图。我有一个侧面菜单,可以通过导航按钮访问。过渡到我的家庭"页面菜单在我刷新之前是不可见的!
在我的旁边菜单中,我使用包含在$ timeout中的$ state.go来导航到不同的页面并且它完美地运行,但是在我的授权登录期间这样做(例如:一旦auth&d; d转移到app。 home)除非我刷新页面,否则按钮不可见。
看来像这样的问题经常被问到,我已经尝试了我能找到的每一个解决方案;我尝试在$ timeout中包装$ state.go,尝试使用$ state.transitionTo,尝试使用$ state.go(... {reload:true}将reload设置为true,并尝试重新加载:true inherit:false with transitionTo没有什么能解决这个问题。我甚至尝试重新设计我的工作流程以便从不同的位置处理这个问题,但无论我做什么,菜单按钮都不会出现。
<ion-side-menus enable-menu-with-back-views="false">
<ion-side-menu-content>
<ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary">
<button class="button button-icon ion-navicon" menu-toggle="left">
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="menuContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<ion-header-bar class="bar-stable">
<h1 class="title">Title!</h1>
</ion-header-bar>
<ion-content ng-controller="menuController">
<ion-list>
<ion-item nav-clear menu-close ng-click="navHome()">
Home
</ion-item>
...
$scope.navHome = function () {
$timeout( function() {
$state.go('app.home');
});
};
从ng-click单击时,上面的工作正常,但是我的loginController中的以下函数在成功验证后执行不起作用(菜单图标在我刷新页面之前不会显示)< / p>
var _login = function() {
// do server side stuff
$timeout(function () {
$state.go('app.home');
});
};
**更新** 我有一个解决方法,但我仍然想了解这里发生了什么,因为我不认为这是&#34;对&#34;办法。我移动了我的代码以便加载app.home,然后将state.go转到app.login(其中菜单按钮是不可见的,这很好),然后当登录时将state.go返回到app.home菜单按钮再次出现。我认为这是因为它已经过渡并回到了。
答案 0 :(得分:8)
enable-menu-with-back-views
上的属性<ion-side-menus>
需要设置为true。
只要<ion-nav-back-button></ion-nav-back-button>
中没有<ion-nav-bar>
,您就不会看到后退按钮。如果您在<ion-nav-back-button>
中添加了<ion-nav-bar>
,则可以通过在hide-back-button="true"
上设置<ion-view>
来逐个停用该状态。我发现$timeout
没有必要。
答案 1 :(得分:1)
只有我解决了这个问题:
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });