如何通过框架从 NativeScript 模式开启器获取上下文?
Posted
技术标签:
【中文标题】如何通过框架从 NativeScript 模式开启器获取上下文?【英文标题】:How to get context from NativeScript modal opener through frame? 【发布时间】:2019-09-03 06:16:28 【问题描述】:我无法让 showModal 通过框架将上下文传递到默认页面。此外,在加载模式时,showingModally 似乎不会触发(我猜来自showingModally 的args 应该传递上下文?)。
我已经尝试了自定义操作栏下https://docs.nativescript.org/ui/modal-view 上提供的示例,因为我需要在框架内加载模式。模态打开和关闭正常,但在模态 XML 中显示Modally 似乎没有运行。
home/home-page.js
const modalView = "home/modal-root";
function openModal(args)
console.log('Opens modal');
const mainpage = args.object.page;
const context = "some context";
mainpage.showModal(modalView, context, () =>
console.log('Modal closed');
, true);
exports.openModal = openModal;
主页/主页.xml
<Page xmlns="http://www.nativescript.org/tns.xsd">
<Page.actionBar>
<ActionBar title="Modal view Navigation" />
</Page.actionBar>
<GridLayout rows="auto, *">
<Button text="Open modal" tap="openModal" textWrap="true" />
</GridLayout>
</Page>
home/modal-root.xml
<Frame defaultPage="home/modal-view-page" />
home/modal-view-page.js
function onShowingModally(args)
console.log("onShowingModally");
exports.onShowingModally = onShowingModally;
function onCloseModal(args)
args.object.closeModal();
exports.onCloseModal = onCloseModal;
home/modal-view-page.xml
<Page backgroundColor="green" showingModally="onShowingModally">
<Page.actionBar>
<ActionBar backgroundColor="red" title="Modal view" icon="">
</ActionBar>
</Page.actionBar>
<StackLayout backgroundColor="lightGreen">
<Label text="Modal view with ActionBar" style="text-align:center;" textWrap="true" />
<Button text="Close Modal" tap="onCloseModal" />
</StackLayout>
</Page>
我已将示例添加到 https://play.nativescript.org/?template=play-js&id=lFxTi4&v=9 带有控制台日志记录。
控制台在打开时显示“打开模式”,在关闭时按预期显示“模式关闭”(来自 home/home-page.js),但“onShowingModally”(home/modal-view-page.js)从未在控制台中显示.
【问题讨论】:
【参考方案1】:我认为文档需要修复。当您以模态方式显示Frame
时,将在Frame
上而不是在其中的页面上调用该事件。如果您显示的是简单视图而不是 Frame
,则应在视图上调用事件,基本上是模式的根视图,在您的示例中是 Frame
。
Updated Playground
【讨论】:
以上是关于如何通过框架从 NativeScript 模式开启器获取上下文?的主要内容,如果未能解决你的问题,请参考以下文章
Nativescript Vue(移动应用程序) - 如何将模式列表视图中的选定项目数据传递回主应用程序?
使用 javascript 访问 nativescript 磁力计数据
NativeScript for Android App 中的 Kiosk 模式