我无法让showModal通过框架将上下文传递到默认页面。此外,当加载模式时,showingModally似乎不会触发(我猜来自showingModally的args应该传递上下文?)。
我已经尝试了在https://docs.nativescript.org/ui/modal-view上的Custom Actionbar下提供的示例,因为我需要在框架中加载模式。模态可以正常打开和关闭,但是模态XML中的showingModally似乎不能运行。
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;home/home-page.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)。
发布于 2019-04-13 03:51:31
我认为这些文档需要修复。当您以模式显示Frame时,事件将在Frame上调用,而不是在页面上调用。如果您显示的是一个简单的视图而不是Frame,那么应该在视图上调用事件,基本上无论您的模式的根视图是什么,在您的示例中都是Frame。
https://stackoverflow.com/questions/55652349
复制相似问题