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