mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Fixed #727: Provide a way to get a reference to the currently showing modal page instance.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import observable = require("data/observable");
|
||||
import pages = require("ui/page");
|
||||
import textField = require("ui/text-field");
|
||||
import frame = require("ui/frame");
|
||||
|
||||
var context: any;
|
||||
var closeCallback: Function;
|
||||
@@ -13,6 +14,11 @@ export function onShownModally(args: pages.ShownModallyData) {
|
||||
console.log("login-page.onShownModally, context: " + args.context);
|
||||
context = args.context;
|
||||
closeCallback = args.closeCallback;
|
||||
var modalPage = <pages.Page>args.object;
|
||||
|
||||
if (frame.topmost().currentPage.modal !== args.object) {
|
||||
throw new Error(`frame.topmost().currentPage.modal.id: ${frame.topmost().currentPage.modal.id}; modalPage.id: ${modalPage.id}`);
|
||||
}
|
||||
}
|
||||
|
||||
export function onLoaded(args: observable.EventData) {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import {ShownModallyData} from "ui/page";
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import frame = require("ui/frame");
|
||||
import page = require("ui/page");
|
||||
|
||||
export function onShownModally(args: ShownModallyData) {
|
||||
TKUnit.wait(0.350);
|
||||
TKUnit.wait(0.100);
|
||||
var modalPage = <page.Page>args.object;
|
||||
args.context.shownModally = true;
|
||||
TKUnit.assert(frame.topmost().currentPage.modal = modalPage, "frame.topmost().currentPage.modal should be equal to the page instance on page.shownModally event handler.");
|
||||
args.closeCallback("return value");
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import TKUnit = require("../../TKUnit");
|
||||
import LabelModule = require("ui/label");
|
||||
import helper = require("../helper");
|
||||
import view = require("ui/core/view");
|
||||
import frame = require("ui/frame");
|
||||
|
||||
global.moduleMerge(PageTestCommon, exports);
|
||||
|
||||
@@ -35,11 +36,13 @@ export function test_WhenPageIsLoadedItCanShowAnotherPageAsModal() {
|
||||
var modalCloseCallback = function (returnValue: any) {
|
||||
TKUnit.assert(ctx.shownModally, "Modal-page must be shown!");
|
||||
TKUnit.assert(returnValue === "return value", "Modal-page must return value!");
|
||||
TKUnit.wait(0.350);
|
||||
TKUnit.assert(!frame.topmost().currentPage.modal, "frame.topmost().currentPage.modal should be undefined when no modal page is shown!");
|
||||
TKUnit.wait(0.100);
|
||||
modalClosed = true;
|
||||
}
|
||||
|
||||
var loadedEventHandler = function (args) {
|
||||
TKUnit.assert(!frame.topmost().currentPage.modal, "frame.topmost().currentPage.modal should be undefined when no modal page is shown!");
|
||||
var basePath = "ui/page/";
|
||||
args.object.showModal(basePath + "modal-page", ctx, modalCloseCallback, false);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user