<ons-navigator />

実例

Stack navigation

The Navigator is a component that provides stack based navigation. It is a very common navigation pattern in mobile apps.

After pushing a page to the top of the stack it will be displayed using transition animation. When the user goes back to the previous page the top page will be popped from the top of the stack and hidden with an corresponding transition animation.

Basic usage

The Navigator maintains a stack of route objects. These objects can be arbitrary objects and are rendered into pages with the renderPage property. The renderPage property must be set to a function that returns a Page component.

To push a new page on top of the stack, the pushPage(route) method is used. Similarly, a page is popped from the stack with the popPage() method.

The stack must be initialized with either the initialRoute or initialRouteStack, depending on whether the the stack needs to be initialized with one or more pages.

The back button

The BackButton component can be used to put a back button in the navigation bar. The component will automatically find the Navigator component and pop a page when pressed.

<Toolbar>
  <div className='left'>
    <BackButton>Back</BackButton>
  </div>
  <div className='center'>
    Title
  </div>
</Toolbar>

Customizing the animation

There are several animations available for the Navigator component. To change the animation the animation property is used. Available animations are slide, lift and fade. Setting the property to none will make the transition instantly.

It is also possible to customize the duration, delay and timing function of the animation using the animationOptions property.

<Navigator
  initialRoute={...}
  renderPage={...}
  animation='fade'
  animationOptions={{duration: 0.2, timing: 'ease-in'}}
/>

For iOS’ “swipe to pop” feature, add the swipeable prop. Note that this behavior is automatically removed on Android platforms unless swipeable={'force'} is specified.

関連情報

名前 型 / デフォルト値 概要
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 "slide", "lift", "fade" and "none". These are platform based animations. For fixed animations, add "-ios" or "-md" suffix to the animation name. E.g. "lift-ios", "lift-md". Defaults values are "slide-ios" and "fade-md" depending on the platform.

(翻訳中)
Optional.
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 "slide", "lift", "fade" and "none". These are platform based animations. For fixed animations, add "-ios" or "-md" suffix to the animation name. E.g. "lift-ios", "lift-md". Defaults values are "slide-ios" and "fade-md".

(翻訳中)
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されます。
popPage([options]): Promise

現在表示中のページをページスタックから取り除きます。一つ前のページに戻ります。

返り値: 明らかにしたページを解決するPromiseを返します。

パラメーター
名前 概要
options Object オプションを指定するオブジェクト。
options.animation String

Animation name. Available animations are "slide", "lift", "fade" and "none". These are platform based animations. For fixed animations, add "-ios" or "-md" suffix to the animation name. E.g. "lift-ios", "lift-md". Defaults values are "slide-ios" and "fade-md".

(翻訳中)
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. (翻訳中)
pushPage(page, [options]): Promise

指定した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 "slide", "lift", "fade" and "none". These are platform based animations. For fixed animations, add "-ios" or "-md" suffix to the animation name. E.g. "lift-ios", "lift-md". Defaults values are "slide-ios" and "fade-md".

(翻訳中)
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. (翻訳中)
replacePage(page, [options]): Promise

現在表示中のページをを指定したページに置き換えます。

返り値: 新しいページを解決するPromiseを返します。

insertPage(index, page, [options]): Promise

指定したpageをページスタックのindexで指定した位置に追加します。

返り値: 指定したページを解決するPromiseを返します。

パラメーター
名前 概要
index Number スタックに挿入する位置のインデックスを指定します。
removePage(index, [options]): Promise

指定したインデックスにあるページを削除します。

返り値: 削除によって表示されたページを解決するPromiseを返します。

パラメーター
名前 概要
index Number スタックから削除するページのインデックスを指定します。
resetToPage(page, [options]): Promise

ページスタックをリセットし、指定したページを表示します。

返り値: 新しいトップページを解決する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. (翻訳中)
bringPageTop(item, [options]): Promise

指定したページをページスタックの一番上に移動します。もし指定したページが無かった場合新しく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). (翻訳中)
prepush

pageがpushされる直前に発火されます。

パラメーター
名前 概要
event Object Event object.
event.navigator Object コンポーネントのオブジェクト。
event.currentPage Object 現在のpageオブジェクト。
event.cancel Function この関数を呼び出すと、push処理がキャンセルされます。
prepop

pageがpopされる直前に発火されます。

パラメーター
名前 概要
event Object Event object.
event.navigator Object コンポーネントのオブジェクト。
event.currentPage Object 現在のpageオブジェクト。
event.cancel Function この関数を呼び出すと、pageのpopがキャンセルされます。
postpush

pageがpushされてアニメーションが終了してから発火されます。

パラメーター
名前 概要
event Object Event object.
event.navigator Object コンポーネントのオブジェクト。
event.enterPage Object pushされたpageオブジェクト。
event.leavePage Object 以前のpageオブジェクト。
postpop

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. (翻訳中)
swipe

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に記載をお願いいたします。

あわせて、下記の情報も参考にしてください。