$ state.go,页面上缺少元素直到刷新

Jos*_*ana 3 angularjs angular-ui-router ionic-framework

我正在使用Ionic和AngularJS构建应用程序并使用状态来管理视图.我有一个侧面菜单,可以通过导航按钮访问.转换到我的"主页"页面时,菜单在我刷新之前是不可见的!

在我的旁边菜单中,我使用包含在$ timeout中的$ state.go来导航到不同的页面并且它完美地运行,但是在我的授权登录期间执行它(例如:一旦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');
    });
};
Run Code Online (Sandbox Code Playgroud)

从ng-click单击时,上面的工作正常,但是我的loginController中的以下函数在成功验证后执行不起作用(菜单图标在我刷新页面之前不会显示)

    var _login = function() {
        // do server side stuff
        $timeout(function () {
            $state.go('app.home');
        });
    };
Run Code Online (Sandbox Code Playgroud)

**更新**我有一个解决方法,但我仍然想了解这里发生了什么,因为我不认为这是"正确的"方式.我移动了我的代码以便加载app.home,然后将state.go转到app.login(其中菜单按钮是不可见的,这很好),然后当登录时将state.go返回到app.home菜单按钮再次出现.我认为这是因为它已经过渡和回归.

Jos*_*ham 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没有必要.