The <ons-navigator>
element handles a stack of pages. This is a very common type of navigation in mobile apps where one page is pushed on top of another using a transition animation.
To change the animation you can use the animation
attribute:
<ons-navigator animation="fade"></ons-navigator>
Available animations are:
fade
lift
slide
none
For iOS’ “swipe to pop” feature, add the swipeable
attribute. Note that this behavior is automatically removed on Android platforms unless swipeable="force"
is specified.
The pages that you push to the Navigator are defined using a <template>
element.
<template id="page2.html">
<ons-page>
...
</ons-page>
</template>
The id
attribute is used to reference the pages when pushing.
To push a new page to the top of the stack, the pushPage(page, options)
method is used.
In Onsen UI all such methods are attached to the element so you need to create a reference to it:
var myNavigator = document.getElementById('myNavigator');
myNavigator.pushPage('page2.html');
The method returns a Promise
object that is resolved when the transition is finished. You can try adding the following code:
myNavigator
.pushPage('page2.html')
.then(function() {
ons.notification.alert('Page pushed!');
});
It may be useful to have access to custom data when we push a new page. This is achieved by passing options.data
parameter:
myNavigator
.pushPage('page2.html', {
data: {
title: 'New Page',
// ...
},
// Other options
});
options.data
object will be available in the new page element: myNavigator.topPage.data
.
To go back to a previous page the popPage(options)
method is used.
Another way is to use the <ons-back-button>
element. It can be added to the left side of the toolbar and renders as an arrow:
<ons-toolbar>
<div class="left">
<ons-back-button>Back</ons-back-button>
</div>
</ons-toolbar>
It will automatically find the Navigator element and trigger a popPage()
call so there is no need to attach any click handlers to it.
Many apps show a different first page depending on whether the user is logged in or not. To achieve this with the navigator, it is best not to define any page attribute on the navigator element at all. Then, when the app is ready, determine what the first page should be.
ons.ready(function() {
if(isLoggedIn()) {
myNavigator.pushPage('homePage.html');
} else {
myNavigator.pushPage('loginPage.html');
}
});
名前 | 型 / デフォルト値 | 概要 |
---|---|---|
page | String | ナビゲーターが初期化された時に表示するページを指定します。 Optional. 初期化時のみ有効 |
swipeable | Boolean | Enable iOS “swipe to pop” feature. (翻訳中) Optional. |
swipe-target-width |
String
20px |
スワイプの判定領域をピクセル単位で指定します。画面の端から指定した距離に達するとページが表示されます。 Optional. |
swipe-threshold |
Number
0.2 |
Specify how much the page needs to be swiped before popping. A value between 0 and 1 .
(翻訳中)
Optional.
|
animation |
String
default |
Animation name. Available animations are |
animation-options | Expression |
アニメーション時のduration, timing, delayをオブジェクトリテラルで指定します。e.g. {duration: 0.2, delay: 1, timing: 'ease-in'}
Optional.
|
名前 | 概要 |
---|---|
animationOptions |
アニメーション時のduration, timing, delayをオブジェクトリテラルで指定します。e.g. {duration: 0.2, delay: 1, timing: 'ease-in'}
|
pageLoader | PageLoaderインスタンスを格納しています。 |
page |
初期化時に読み込むページを指定します。page 属性で指定した値よりもpage プロパティに指定した値を優先します。
|
onDeviceBackButton | バックボタンハンドラ。 |
topPage | 現在のページを取得します。pushPage()やresetToPage()メソッドの引数を取得できます。 |
pages | Copy of the navigator’s page stack. (翻訳中) |
onSwipe | Hook called whenever the user slides the navigator (swipe-to-pop). It gets a decimal ratio (0-1) and an animationOptions object as arguments. (翻訳中) |
options | Default options object. Attributes have priority over this property. (翻訳中) |
options.animation |
Animation name. Available animations are |
options.animationOptions |
アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: 'ease-in'}
|
options.callback | このメソッドによる画面遷移が終了した際に呼び出される関数オブジェクトを指定します。 |
シグネチャ | 概要 |
---|---|
popPage([options]) | 現在表示中のページをページスタックから取り除きます。一つ前のページに戻ります。 |
pushPage(page, [options]) | 指定したpageを新しいページスタックに追加します。新しいページが表示されます。 |
replacePage(page, [options]) | 現在表示中のページをを指定したページに置き換えます。 |
insertPage(index, page, [options]) | 指定したpageをページスタックのindexで指定した位置に追加します。 |
removePage(index, [options]) | 指定したインデックスにあるページを削除します。 |
resetToPage(page, [options]) | ページスタックをリセットし、指定したページを表示します。 |
bringPageTop(item, [options]) | 指定したページをページスタックの一番上に移動します。もし指定したページが無かった場合新しくpushされます。 |
現在表示中のページをページスタックから取り除きます。一つ前のページに戻ります。
返り値: 明らかにしたページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
options | Object | オプションを指定するオブジェクト。 |
options.animation | String |
Animation name. Available animations are |
options.animationOptions | String | アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: ‘ease-in’} |
options.callback | Function | このメソッドによる画面遷移が終了した際に呼び出される関数オブジェクトを指定します。 |
options.data | Object | Custom data that will be stored in the new page element. (翻訳中) |
options.times | Number | Number of pages to be popped. Only one animation will be shown. (翻訳中) |
指定したpageを新しいページスタックに追加します。新しいページが表示されます。
返り値: 追加したページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
page | String |
pageのURLか、もしくは<template> で宣言したテンプレートのid属性の値を指定できます。
|
options | Object | オプションを指定するオブジェクト。 |
options.page | String |
Page URL. Only necessary if page parameter is null or undefined.
(翻訳中)
|
options.pageHTML | String |
HTML code that will be computed as a new page. Overwrites page parameter.
(翻訳中)
|
options.animation | String |
Animation name. Available animations are |
options.animationOptions | String |
アニメーション時のduration, delay, timingを指定します。e.g. {duration: 0.2, delay: 0.4, timing: 'ease-in'}
|
options.callback | Function | pushPage()による画面遷移が終了した時に呼び出される関数オブジェクトを指定します。 |
options.data | Object | Custom data that will be stored in the new page element. (翻訳中) |
現在表示中のページをを指定したページに置き換えます。
返り値: 新しいページを解決するPromiseを返します。
指定したpageをページスタックのindexで指定した位置に追加します。
返り値: 指定したページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
index | Number | スタックに挿入する位置のインデックスを指定します。 |
指定したインデックスにあるページを削除します。
返り値: 削除によって表示されたページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
index | Number | スタックから削除するページのインデックスを指定します。 |
ページスタックをリセットし、指定したページを表示します。
返り値: 新しいトップページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
options.pop | Boolean |
Performs ‘pop’ effect if true instead of ‘push’ or none. This also sets options.animation value to default instead of none .
(翻訳中)
|
指定したページをページスタックの一番上に移動します。もし指定したページが無かった場合新しくpushされます。
返り値: 新しいトップページを解決するPromiseを返します。
名前 | 型 | 概要 |
---|---|---|
item | String|Number | ページのURLかもしくはons-navigatorのページスタックのインデックス値を指定します。 |
名前 | 概要 |
---|---|
prepush | pageがpushされる直前に発火されます。 |
prepop | pageがpopされる直前に発火されます。 |
postpush | pageがpushされてアニメーションが終了してから発火されます。 |
postpop | pageがpopされてアニメーションが終わった後に発火されます。 |
swipe | Fired whenever the user slides the navigator (swipe-to-pop). (翻訳中) |
pageがpushされる直前に発火されます。
名前 | 型 | 概要 |
---|---|---|
event | Object | Event object. |
event.navigator | Object | コンポーネントのオブジェクト。 |
event.currentPage | Object | 現在のpageオブジェクト。 |
event.cancel | Function | この関数を呼び出すと、push処理がキャンセルされます。 |
pageがpopされる直前に発火されます。
名前 | 型 | 概要 |
---|---|---|
event | Object | Event object. |
event.navigator | Object | コンポーネントのオブジェクト。 |
event.currentPage | Object | 現在のpageオブジェクト。 |
event.cancel | Function | この関数を呼び出すと、pageのpopがキャンセルされます。 |
pageがpushされてアニメーションが終了してから発火されます。
名前 | 型 | 概要 |
---|---|---|
event | Object | Event object. |
event.navigator | Object | コンポーネントのオブジェクト。 |
event.enterPage | Object | pushされたpageオブジェクト。 |
event.leavePage | Object | 以前のpageオブジェクト。 |
pageがpopされてアニメーションが終わった後に発火されます。
名前 | 型 | 概要 |
---|---|---|
event | Object | Event object. |
event.navigator | Object | コンポーネントのオブジェクト。 |
event.enterPage | Object | popされて表示されるページのオブジェクト。 |
event.leavePage | Object | popされて消えるページのオブジェクト。 |
event.swipeToPop | Object | True if the pop was triggered by the user swiping to pop. (翻訳中) |
event.onsBackButton | Object | True if the pop was caused by pressing an ons-back-button. (翻訳中) |
Fired whenever the user slides the navigator (swipe-to-pop). (翻訳中)
名前 | 型 | 概要 |
---|---|---|
event | Object | Event object. |
event.ratio | Object | Decimal ratio (0-1). (翻訳中) |
event.animationOptions | Object | (翻訳中) |
Onsen UIに関する質問は、Stack Overflowにてonsen-uiタグを付与してください。Onsen UIチームはあなたの問題解決をお手伝いします。
バグ報告や機能要望については、GitHub Issuesに記載をお願いいたします。
あわせて、下記の情報も参考にしてください。