$state.go,页面上缺少元素,直到刷新
$state.go, missing elements on page until refresh
我正在使用 Ionic & AngularJS 构建应用程序并使用状态来管理视图。我有一个侧面菜单,可通过导航按钮访问。当转换到我的 "home" 页面时,菜单在我刷新之前是不可见的!
在我的侧面菜单中,我使用包含在 $timeout 中的 $state.go 来导航到不同的页面并且它工作得很好,但是在我的授权登录期间这样做时(例如:一旦 auth'd 移动到app.home) 除非我刷新页面,否则按钮不可见。
像这样的问题似乎经常被问到,我已经尝试了我能找到的每一个解决方案;我尝试将 $state.go 包装在 $timeout 中,尝试使用 $state.transitionTo,尝试使用 $state.go(... {reload:true} 将 reload 设置为 true,并尝试reload:true inherit:false 使用 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');
});
};
**更新**
我有一个解决方法,但我仍然想了解这里发生了什么,因为我认为这不是 "right" 方式。我移动了我的代码以便加载 app.home,然后 state.go 转到 app.login(菜单按钮不可见,这很好),然后当登录时有 state.go回到 app.home 菜单按钮再次出现。我猜想这是因为它被转移了又回到了。
<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
没有必要。
只给我解决了这个问题:
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
我正在使用 Ionic & AngularJS 构建应用程序并使用状态来管理视图。我有一个侧面菜单,可通过导航按钮访问。当转换到我的 "home" 页面时,菜单在我刷新之前是不可见的!
在我的侧面菜单中,我使用包含在 $timeout 中的 $state.go 来导航到不同的页面并且它工作得很好,但是在我的授权登录期间这样做时(例如:一旦 auth'd 移动到app.home) 除非我刷新页面,否则按钮不可见。
像这样的问题似乎经常被问到,我已经尝试了我能找到的每一个解决方案;我尝试将 $state.go 包装在 $timeout 中,尝试使用 $state.transitionTo,尝试使用 $state.go(... {reload:true} 将 reload 设置为 true,并尝试reload:true inherit:false 使用 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');
});
};
**更新** 我有一个解决方法,但我仍然想了解这里发生了什么,因为我认为这不是 "right" 方式。我移动了我的代码以便加载 app.home,然后 state.go 转到 app.login(菜单按钮不可见,这很好),然后当登录时有 state.go回到 app.home 菜单按钮再次出现。我猜想这是因为它被转移了又回到了。
<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
没有必要。
只给我解决了这个问题:
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });