我正在使用Ionic和AngularJS构建应用程序并使用状态来管理视图 . 我有一个侧面菜单,可以通过导航按钮访问 . 转换到我的“主页”页面时,菜单在我刷新之前是不可见的!
在我的旁边菜单中,我使用$ state.go包裹在$ timeout中导航到不同的页面并且它完美地运行,但是在我的授权登录期间执行它(例如:一旦auth'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中的以下函数在成功验证后执行不起作用(菜单图标在我刷新页面之前不会显示)
var _login = function() {
// do server side stuff
$timeout(function () {
$state.go('app.home');
});
};
更新我有一个解决方法,但我仍然想了解这里发生了什么,因为我不认为这是“正确的”方式 . 我移动了我的代码以便加载app.home,然后将state.go转到app.login(其中菜单按钮是不可见的,这很好),然后在登录时将state.go重新发送到app.home菜单按钮再次出现 . 我认为这是因为它已经过渡和回归 .
2 回答
<ion-side-menus>
上的属性enable-menu-with-back-views
需要设置为true .只要您没有
<ion-nav-bar>
中包含<ion-nav-back-button></ion-nav-back-button>
,就不会看到后退按钮 . 如果在<ion-nav-bar>
中包含<ion-nav-back-button>
,则可以通过在<ion-view>
上设置hide-back-button="true"
来禁用每个州 . 我发现没有必要$timeout
.只有这个解决了我: