- Ionic 基础教程
- Ionic - 首页
- Ionic - 概述
- Ionic - 环境搭建
- Ionic CSS 组件
- Ionic - 颜色
- Ionic - 内容
- Ionic - 页眉
- Ionic - 页脚
- Ionic - 按钮
- Ionic - 列表
- Ionic - 卡片
- Ionic - 表单
- Ionic - 开关
- Ionic - 复选框
- Ionic - 单选按钮
- Ionic - 范围滑块
- Ionic - 选择框
- Ionic - 标签页
- Ionic - 网格
- Ionic - 图标
- Ionic - 内边距
- Ionic JavaScript 组件
- Ionic - JS 动作表单
- Ionic - JS 背景遮罩
- Ionic - JS 内容
- Ionic - JS 表单
- Ionic - JS 事件
- Ionic - JS 页眉
- Ionic - JS 页脚
- Ionic - JS 键盘
- Ionic - JS 列表
- Ionic - JS 加载
- Ionic - JS 模态框
- Ionic - JS 导航
- Ionic - JS 弹出层
- Ionic - JS 弹出窗口
- Ionic - JS 滚动
- Ionic - JS 侧边菜单
- Ionic - JS 滑块
- Ionic - JS 标签页
- Ionic 高级概念
- Ionic - Cordova 集成
- Ionic - AdMob
- Ionic - 相机
- Ionic - Facebook
- Ionic - 应用内浏览器
- Ionic - 原生音频
- Ionic - 地理位置
- Ionic - 媒体
- Ionic - 启动画面
- Ionic 有用资源
- Ionic - 快速指南
- Ionic - 有用资源
- Ionic - 讨论
Ionic - JavaScript 导航
导航是每个应用程序的核心组件之一。Ionic 使用AngularJS UI Router处理导航。
使用导航
导航可以在app.js文件中配置。如果您使用的是 Ionic 模板之一,您会注意到$stateProvider服务被注入到应用程序config中。创建应用程序状态的最简单方法如下例所示。
$stateProvider服务将扫描 URL,找到对应的状态并加载我们在app.config中定义的文件。
app.js 代码
.config(function($stateProvider) {
$stateProvider
.state('index', { url: '/', templateUrl: 'templates/home.html'})
.state('state1', {url: '/state1', templateUrl: 'templates/state1.html'})
.state('state2', {url: '/state2', templateUrl: 'templates/state2.html',});
});
状态将加载到ion-nav-view元素中,该元素可以放置在index.html的 body 中。
index.html 代码
<ion-nav-view></ion-nav-view>
当我们在上面提到的示例中创建状态时,我们使用了templateUrl,因此当状态加载时,它将搜索匹配的模板文件。现在,我们将打开templates文件夹并创建一个新文件state1.html,当应用程序 URL 更改为/state1时,将加载该文件。
state1.html 代码
<ion-view>
<ion-content>
This is State 1 !!!
</ion-content>
</ion-view>
创建导航菜单
您可以通过在index.html的 body 中添加“ion-nav-bar”元素,在您的应用程序中添加导航栏。在导航栏内,我们将添加带有图标的ion-nav-back-button。这将用于返回到上一个状态。当状态更改时,按钮将自动出现。我们将分配goBack()函数,该函数将使用$ionicHistory服务来处理此功能。因此,当用户离开首页状态并转到state1时,将出现后退按钮,如果用户想要返回首页状态,可以点击该按钮。
index.html 代码
<ion-nav-bar class = "bar-positive">
<ion-nav-back-button class = "button-clear" ng-click = "goBack()">
<i class = "icon ion-arrow-left-c"></i> Back
</ion-nav-back-button>
</ion-nav-bar>
控制器代码
.MyCtrl($scope, $ionicHistory) {
$scope.goBack = function() {
$ionicHistory.goBack();
};
}
添加导航元素
可以使用ion-nav-buttons将按钮添加到导航栏。此元素应放置在ion-nav-bar或ion-view内。我们可以使用四个选项值分配side属性。primary和secondary值将根据使用的平台放置按钮。有时您希望按钮位于一侧,无论它是 iOS 还是 Android。如果是这种情况,您可以使用left或right属性代替。
我们还可以将ion-nav-title添加到导航栏。所有代码都将放置在index.html的 body 中,因此可以在任何地方使用。
<ion-nav-bar class = "bar-positive">
<ion-nav-title>
Title
</ion-nav-title>
<ion-nav-buttons side = "primary">
<button class = "button">
Button 1
</button>
</ion-nav-buttons>
</ion-nav-bar>
它将生成以下屏幕:
其他导航属性
下表显示了一些其他功能,这些功能可以与 Ionic 导航一起使用。
导航属性
| 属性 | 选项 | 详情 |
|---|---|---|
| nav-transition | none, iOS, Android | 用于设置过渡发生时应应用的动画。 |
| nav-direction | forward, back, enter, exit, swap | 用于设置过渡发生时动画的方向。 |
| hardwareBackButtonClose | 布尔值 | 它将在点击硬件后退按钮时启用关闭模态框。默认值为 true。 |
缓存
Ionic 能够缓存多达十个视图以提高性能。它还提供了一种手动处理缓存的方法。由于仅缓存后退视图,而前进视图每次用户访问时都会加载,因此我们可以通过使用以下代码轻松设置缓存前进视图。
$ionicCinfigProvider.views.forwardCache(true);
我们还可以设置应缓存多少个状态。如果我们希望缓存三个视图,我们可以使用以下代码。
$ionicConfigProvider.views.maxCache(3);
可以在$stateProvider内部或通过将属性设置为ion-view来禁用缓存。这两个示例如下所示。
$stateProvider.state('state1', {
cache: false,
url : '/state1',
templateUrl: 'templates/state1.html'
})
<ion-view cache-view = "false"></ion-view>
控制导航栏
我们可以使用$ionicNavBarDelegate服务来控制导航栏的行为。此服务需要注入到我们的控制器中。
HTML 代码
<ion-nav-bar>
<button ng-click = "setNavTitle('title')">
Set title to banana!
</button>
</ion-nav-bar>
控制器代码
$scope.setNavTitle = function(title) {
$ionicNavBarDelegate.title(title);
}
$ionicNavBarDelegate服务还有其他有用的方法。下表列出了一些这些方法。
用于 $ionicNavBarDelegate 的方法
| 方法 | 参数 | 类型 | 详情 |
|---|---|---|---|
| align(parameter) | center, left, right | 字符串 | 用于对齐标题。 |
| showBackButton(parameter) | show | 布尔值 | 用于显示或隐藏后退按钮。 |
| title(parameter) | title | 字符串 | 用于显示新标题。 |
跟踪历史记录
您可以使用$ionicHistory服务跟踪上一个、当前和下一个视图的历史记录。下表显示了此服务的所有方法。
用于 $ionicHistory 的方法
| 方法 | 参数 | 类型 | 详情 |
|---|---|---|---|
| viewHistory | / | 对象 | 返回应用程序视图历史记录数据。 |
| currentView() | / | 对象 | 返回当前视图。 |
| title(parameter) | title | 字符串 | 返回当前视图的父视图的 ID。 |
| currentTitle(parameter) | val | 字符串 | 返回当前视图的标题。可以通过设置新的val值来更新它。 |
| backView() | / | 字符串 | 返回上一个后退视图。 |
| backTitle() | / | 字符串 | 返回上一个后退视图的标题。 |
| forwardView() | / | 对象 | 返回上一个前进视图。 |
| currentStateName() | / | 字符串 | 返回当前状态名称。 |
| goBack() | backCount | 数字 | 用于设置要返回多少个视图。数字应为负数。如果它是正数或零,则不会有任何影响。 |
| clearHistory() | / | / | 用于清除整个视图历史记录。 |
| clearCache() | / | promise | 用于清除所有缓存的视图。 |
| nextViewOptions() | / | 对象 | 设置下一个视图的选项。您可以查看以下示例以获取更多信息。 |
nextViewOptions()方法有以下三个选项可用。
disableAnimate用于禁用下一个视图更改的动画。
disableBack将后退视图设置为 null。
historyRoot将下一个视图设置为根视图。
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});