8.7 版本发布—WinterCG 兼容性第一部分
了解更多

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>

另请参阅

上一页
导航