基础概念
使用 Frame 和 Page 进行导航
在您的应用程序中页面之间导航。
NativeScript 中的导航由Frame
类启用。
示例
导航到另一个页面
要从一个Page
导航到另一个Page
,首先获取所需的Frame 实例。对于简单的导航,请调用navigate方法并传递要导航到的页面的路径。
ts
frame.navigate('~/pages/details/details-page')
注意
有关完整的导航示例,请查看从主页到详细信息组件设置导航。
获取 Frame 实例
以下是一些获取 Frame 实例的方法。
获取最顶层的 Frame
ts
import { Frame } from '@nativescript/core'
const frame = Frame.topmost()
从 Page 获取 Frame
例如,您可以从tap
事件的数据中获取当前的 Frame 实例,如下所示
ts
onFlickTap(args: EventData): void {
const button = args.object as Button;
const frame = button.page.frame;
}
按 ID 获取 Frame
ts
import { Frame } from '@nativescript/core'
const frame = Frame.getFrameById('frame-id')
返回导航
要返回到上一页,请使用 Frame 实例的goBack方法。
ts
frame.goBack()
避免返回到上一页
要避免导航到上一页,请将传递给navigate方法的NavigationEntry对象的clearHistory属性设置为true
。
ts
frame.navigate({
moduleName: 'details/details-page',
clearHistory: true,
})
在页面之间传递数据
要将数据传递到您要导航到的页面,请将 NavigationEntry 的context属性的值设置为要传递的数据。
ts
frame.navigate({
moduleName: 'details/details-page',
context: { id: 2 },
})
要访问传递的数据,请处理details/details-page
页面的navigatedTo
事件,并在事件的NavigatedData对象上访问context
属性。
ts
import { NavigatedData } from '@nativescript/core'
export function onNavigatedTo(args: NavigatedData) {
this.id = args.context.id
this.notifyPropertyChange('id', args.context.id)
}
创建多个 Frame
如果您需要创建多个 Frame,可以通过将它们包装在容器布局中来实现。例如,如果您想并排放置 2 个 Frame,您可以将它们包装在 GridLayout 中
xml
<GridLayout columns="*, *">
<Frame col="0" />
<Frame col="1" />
</GridLayout>