首页 文章

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

提问于
浏览
3

我正在使用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 回答

  • 1

    <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 .

  • 8

    只有这个解决了我:

    $ionicHistory.clearCache();
    $ionicHistory.clearHistory();
    $ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
    

相关问题