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

时间:2015-01-25 23:08:03

标签: angularjs angular-ui-router ionic-framework

我正在使用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菜单按钮再次出现。我认为这是因为它已经过渡并回到了。

2 个答案:

答案 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 });