我正在尝试使用离子框架来构建一个内容菜单,其中包含两个部分,来自不同的控制器。我已将它们指定为view: menuContent
和view: menuSubcontent
。
HTML
<ion-side-menus>
<ion-side-menu-content>
<ion-nav-bar class="main bar-stable nav-title-slide-ios7">
<ion-nav-back-button class="button-clear"><i class="icon"></i></ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
<ion-nav-view name="menuSubcontent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<header class="bar bar-header bar-stable">
<h1 class="title">Left</h1>
</header>
<ion-content class="has-header">
<ion-list>
<ion-item nav-clear menu-close ng-click="login()">
Login
</ion-item>
<ion-item nav-clear menu-close href="#/app/morestuff">
etc.
</ion-item>
</ion-list>
</ion-content>
</ion-side-menu>
</ion-side-menus>
ROUTER
.state('app.playlists', {
url: "/playlists",
views: {
'menuContent': {
templateUrl: "templates/playlists.html",
controller: 'PlaylistsCtrl'
},
'menuSubcontent': {
template: "<span>subcontent of playlists</span>"
}
}
})
当页面呈现时,<ion-nav-view name="menuSubcontent">
虽然在DOM中,但是不可见。我添加了一些CSS属性以使其可见:
z-index: 2
margin-top: 400px; /* some arbit large number */
我想知道这是否是正确的方法(将我自己的css类添加到menuSubcontent),或者是否有系统的方式使用框架,该框架在多个视图的定位中取出 guesswork 。我还在学习如何使用这个框架。
答案 0 :(得分:0)
<ion-side-menus ng-controller="SideMenuController">
<!-- Header Changes -->
<ion-side-menu-content drag-content="false">
<ion-nav-bar class="bar bar-header bar-positive">
<!-- Open Sidebar Menu Start-->
<ion-nav-buttons side="left">
<button class="button button-icon icon ion-navicon" menu-toggle="left"></button>
</ion-nav-buttons>
<!-- Open Sidebar Menu End -->
<ion-nav-back-button class="button-clear">
<i class="ion-chevron-left"></i> Back
</ion-nav-back-button>
<!-- Open Sidebar Menu Start-->
<ion-nav-buttons side="right">
<button class="button button-icon icon ion-refresh" ng-click="doRefresh()"></button>
</ion-nav-buttons>
<!-- Open Sidebar Menu End -->
</ion-nav-bar>
<ion-nav-view name="main" animation="slide-left-right">
</ion-nav-view>
</ion-side-menu-content>
<!-- Header Changes -->
<!-- SideMenu Contents -->
<ion-side-menu side="left" class="light-bg dark-border">
<header class="bar bar-header bar-light">
<h1 class="title">Route Menu</h1>
</header>
<ion-content class="has-header">
<div class="list">
<a menu-close class="item item-icon-left" href="#/app/home">
<i class="icon fa fa-bank fa-ionicon"></i>
Home
</a>
</ion-content>
<!-- SideMenu Contents -->
</ion-side-menu>
</ion-side-menus>
//** abstract route for sidemenu
$stateProvider.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/sidemenu.tpl.htm'
});
//!** Home
$stateProvider.state('app.home', {
url: '/home',
views: {
'main': {
templateUrl: 'app/home/home.tpl.htm'
}
}
});
在路线中将模板定义为摘要: 资料来源:http://codepen.io/ionic/pen/vqhzt
答案 1 :(得分:0)
如果您在同一页面中保留多个,则必须进行如下配置,
<ion-tab title="Rooms" icon-off="ion-ios7-box-outline" icon-on="ion-ios7-box" href="#/tab/rooms">
<ion-nav-view name="tab-rooms"></ion-nav-view>
</ion-tab>
<ion-tab title="Chat" icon-off="ion-ios7-chatboxes-outline" icon-on="ion-ios7-chatboxes" href="#/tab/chat">
<ion-nav-view name="tab-chat"></ion-nav-view>
</ion-tab>
因此基于url的相应视图将获得渲染,
否则,您可以为每个视图创建单独的状态,如下所示
.state('menuLogin', {
url: '/menuLogin',
abstract: true,
templateUrl: 'templates/loginMenu.html'
})
.state('menuMain', {
url: '/menuMain',
cache:false,
abstract: true,
templateUrl: 'templates/mainMenu.html'
})
.state('menuLogin.login', {
url: '/login',
views: {
'menuContent': {
templateUrl: 'templates/login.html',
controller: 'LoginCtrl'
}
}
})
.state('menuMain.main', {
url: '/main',
views: {
'menuContent': {
templateUrl: 'templates/main.html',
controller: 'MainCtrl'
}
}
})
所以第一个状态属于登录菜单,第二个属于主菜单。
Loginmenu.html:
<ion-nav-bar class="bar-positive" align-title="center">
<ion-nav-back-button class="no-text">
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view name="menuContent" align-title="center"></ion-nav-view>
和Mainmenu.html:
<ion-nav-bar class="bar-positive" align-title="center" style="text-align:center;">
<ion-nav-back-button class="no-text">
</ion-nav-back-button>
<ion-nav-buttons side="right">
<button class="button button-icon button-clear ion-navicon" menu-toggle="right">
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="menuContent" align-title="center"></ion-nav-view>
所以你可以自定义这样的状态。
希望这会对你有所帮助。