Fixed #779: frame.topmost().currentPage is not the same instance as the page being loaded in page.loaded event handler.

This commit is contained in:
Rossen Hristov
2015-10-20 14:19:19 +03:00
parent 03a741e4b1
commit 2545f2f19a
8 changed files with 134 additions and 4 deletions

View File

@@ -1,13 +1,25 @@
import observable = require("data/observable");
import pages = require("ui/page");
import labelModule = require("ui/label");
import frame = require("ui/frame");
var page: pages.Page;
var label: labelModule.Label;
export function pageLoaded(args: observable.EventData) {
export function onLoaded(args: observable.EventData) {
console.log("main-page.onLoaded");
if (args.object !== frame.topmost().currentPage) {
throw new Error("args.object must equal frame.topmost().currentPage on page.loaded");
}
page = <pages.Page>args.object;
label = page.getViewById<labelModule.Label>("label");
label = frame.topmost().getViewById<labelModule.Label>("label");
if (!label) {
throw new Error("Could not find `label`");
}
}
export function onNavigatedTo(args: observable.EventData) {
console.log("main-page.onNavigatedTo");
}
export function onTap(args: observable.EventData) {

View File

@@ -1,4 +1,4 @@
<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="pageLoaded" id="_mainPage" backgroundColor="Red">
<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="onLoaded" navigatedTo="onNavigatedTo" id="_mainPage" backgroundColor="Red">
<StackLayout backgroundColor="PaleGreen">
<Button text="Login (small)" tap="onTap" />
<Button text="Login (full-screen)" tap="onTap" />