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