sidemenu 模板有几个在 app.js 中定义的嵌套状态。 当您导航到嵌套状态(例如,“app.single”)时,离子导航栏会使用“<返回”按钮进行更新。
当您返回“主页”(“/app/playlists”)时,后退按钮将替换为 ion-navicon(参见 menu.html)。 您还可以通过向控制器添加一个简单的功能来转换到主页 (playlists.html):
$scope.goHome = function() {
$state.go('app.playlists');
};
如果添加另一个级别的嵌套状态:
.state('app.playlists.classic-rock', {
url: "/classic-rock",
views: {
'menuContent<strong i="10">@app</strong>': {
templateUrl: "templates/classic-rock.html",
controller: 'ClassicRockController'
}
}
})
并从您切换到主页的视图控制器调用 goHome() 函数,但是后退按钮没有被 ion-navicon 替换?
如果您从一个视图导航到另一个视图然后返回“主页”,情况也是如此:
在 sidemenu 模板的 menu.html 中:
<ion-nav-bar class="bar-stable">
<ion-nav-back-button>
</ion-nav-back-button>
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon"
menu-toggle="left">
</button>
</ion-nav-buttons>
</ion-nav-bar>
ion-nav-buttons 必须是 ion-nav-view 的直接后代,而不是ion-nav-bar。
更新 menu.html:
<ion-nav-bar class="bar-stable">
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
并更新了 playlists.html:
<ion-view view-title="Playlists">
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon"
menu-toggle="left">
</button>
</ion-nav-buttons>
<ion-content>
<ion-list>
<ion-item ng-repeat="playlist in playlists"
href="#/app/playlists/{{playlist.id}}">
{{playlist.title}}
</ion-item>
</ion-list>
</ion-content>
</ion-view>
所以你所描述的和标记实际上是正确的。
http://codepen.io/mhartington/pen/azwojR
您所描述的是由 menu-close 属性引起的。
http://ionicframework.com/docs/api/directive/menuClose/
因此,当您通过侧菜单导航时,具有菜单关闭属性的链接将清除历史记录并防止显示后退按钮。
在您的情况下,您通过$state.go
进行导航,它没有 menu-close 提供的逻辑。
所以你需要添加一点。
$scope.goHome = function() {
$state.go('app.playlists');
$ionicHistory.nextViewOptions({
historyRoot: true
});
};
谢谢@mhartington....
它解决了我的问题...
最有用的评论
所以你所描述的和标记实际上是正确的。
http://codepen.io/mhartington/pen/azwojR
您所描述的是由 menu-close 属性引起的。
http://ionicframework.com/docs/api/directive/menuClose/
因此,当您通过侧菜单导航时,具有菜单关闭属性的链接将清除历史记录并防止显示后退按钮。
在您的情况下,您通过
$state.go
进行导航,它没有 menu-close 提供的逻辑。所以你需要添加一点。