Loaded/Unloaded fix

This commit is contained in:
vakrilov
2015-05-05 16:02:43 +03:00
parent 371c1b1d05
commit 45450456a1
8 changed files with 54 additions and 42 deletions

View File

@@ -131,6 +131,7 @@
<TypeScriptCompile Include="apps\tests\pages\page17.ts">
<DependentUpon>page17.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\pages\page18.ts" />
<TypeScriptCompile Include="apps\tests\pages\property-bindings.ts" />
<TypeScriptCompile Include="apps\tests\platform-tests.ts" />
<TypeScriptCompile Include="apps\tests\fps-meter-tests.ts" />
@@ -591,6 +592,7 @@
<Content Include="apps\TelerikNEXT\images\background.jpg" />
<Content Include="apps\template-settings\app.css" />
<Content Include="apps\tests\app\location-example.xml" />
<Content Include="apps\tests\pages\page18.xml" />
<Content Include="apps\tests\ui\label\label-tests-wrong.css" />
<Content Include="apps\tests\pages\files\other.xml" />
<Content Include="apps\tests\pages\files\test.android.phone.xml" />
@@ -1562,7 +1564,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@@ -1,25 +1,11 @@
import observable = require("data/observable");
import pages = require("ui/page");
import pages = require("ui/page");
import frame = require("ui/frame");
import observable = require("data/observable");
import trace = require("trace");
trace.setCategories("gestures");
trace.enable();
// Event handler for Page "loaded" event attached in main-page.xml
export function pageLoaded(args: observable.EventData) {
//// Get the event sender
//var page = <pages.Page>args.object;
//var textItem = new pages.MenuItem();
//textItem.text = "from loaded";
//textItem.on("tap", () => {
// console.log("item added in page.loaded tapped!!!");
//});
//page.optionsMenu.addItem(textItem);
}
export function itemTap(args) {
console.log("----- Item tapped: " + args.view.tag);
@@ -28,7 +14,6 @@ export function itemTap(args) {
});
}
export function itemLoaded(args: observable.EventData) {
console.log("----- Item loaded: " + (<any>args.object).tag);
}

View File

@@ -33,13 +33,13 @@ export function test_NavBar_isVisible_when_MenuItems_areSet() {
var navBarIsVisible = false;
var handler = function (data) {
page.off(view.View.loadedEvent, handler);
page.off(PageModule.Page.navigatedToEvent, handler);
navBarIsVisible = (<any>page.frame.ios).showNavigationBar;
}
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.on(view.View.loadedEvent, handler);
page.on(PageModule.Page.navigatedToEvent, handler);
var mi = new PageModule.MenuItem();
mi.text = "B";

View File

@@ -409,7 +409,7 @@ export function testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelected
}
export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack() {
var topFrame = frameModule.topmost();
var i: number;
var itemCount = 3;
var loadedItems = [0, 0, 0];
var unloadedItems = [0, 0, 0];
@@ -420,25 +420,24 @@ export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack() {
function createLoadedFor(itemIndex: number) {
return function () {
console.log("loaded item: " + itemIndex)
loadedItems[itemIndex] = loadedItems[itemIndex] + 1;
}
}
function createUnloadedFor(itemIndex: number) {
return function () {
console.log("unloaded item: " + itemIndex)
unloadedItems[itemIndex] = unloadedItems[itemIndex] + 1;
}
}
for (var i = 0; i < itemCount; i++) {
items[i].view.on("loaded", createLoadedFor(i));
items[i].view.on("unloaded", createUnloadedFor(i));
}
helper.buildUIAndRunTest(tabView, function () {
try {
// Attach to loaded/unloaded events
for (i = 0; i < itemCount; i++) {
items[i].view.on("loaded", createLoadedFor(i));
items[i].view.on("unloaded", createUnloadedFor(i));
}
var detailsPageFactory = function (): pageModule.Page {
var detailsPage = new pageModule.Page();
detailsPage.content = new labelModule.Label();
@@ -451,16 +450,16 @@ export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack() {
// Go back to the test page.
helper.goBack();
}
console.log("loaded items: " + loadedItems.join(", "));
console.log("unloadedItems items: " + unloadedItems.join(", "));
//console.log("loaded items: " + loadedItems.join(", "));
//console.log("unloadedItems items: " + unloadedItems.join(", "));
// Check that at least the first item is loaded and unloaded
TKUnit.assertEqual(loadedItems[0], 1, "loaded count for 1st item");
TKUnit.assertEqual(unloadedItems[0], 1, "unloaded count for 1st item");
// Check that loaded/unloaded coutns are equal for all tabs
for (var i = 0; i < itemCount; i++) {
for (i = 0; i < itemCount; i++) {
TKUnit.assert(loadedItems[i] === unloadedItems[i],
"Loaded and unloaded calls are not equal for item " + i + " loaded: " + loadedItems[i] + " unloaded: " + unloadedItems[i]);
}

View File

@@ -66,8 +66,7 @@ export var test_parse_ShouldFindEventHandlersInExports = function () {
loaded = true;
}
});
page.onLoaded();
page._emit("loaded");
TKUnit.assert(loaded, "Parse should find event handlers in exports.");
};

View File

@@ -28,10 +28,28 @@ class UIViewControllerImpl extends UIViewController {
trace.write(this._owner + " viewDidLayoutSubviews, isLoaded = " + this._owner.isLoaded, trace.categories.ViewHierarchy);
this._owner._updateLayout();
}
public viewWillAppear() {
trace.write(this._owner + " viewWillAppear", trace.categories.Navigation);
this._owner._enableLoadedEvents = true;
this._owner.onLoaded();
this._owner._enableLoadedEvents = false;
}
public viewDidDisappear() {
trace.write(this._owner + " viewDidDisappear", trace.categories.Navigation);
this._owner._enableLoadedEvents = true;
this._owner.onUnloaded();
this._owner._enableLoadedEvents = false;
}
}
export class Page extends pageCommon.Page {
private _ios: UIViewController;
public _enableLoadedEvents: boolean;
constructor(options?: definition.Options) {
super(options);
@@ -44,6 +62,20 @@ export class Page extends pageCommon.Page {
this._addNativeView(newView);
}
public onLoaded() {
// loaded/unloaded events are handeled in page viewWillAppear/viewDidDisappear
if (this._enableLoadedEvents) {
super.onLoaded();
}
}
public onUnloaded() {
// loaded/unloaded events are handeled in page viewWillAppear/viewDidDisappear
if (this._enableLoadedEvents) {
super.onUnloaded();
}
}
private _addNativeView(view: viewModule.View) {
if (view) {
trace.write("Native: Adding " + view + " to " + this, trace.categories.ViewHierarchy);

View File

@@ -281,6 +281,7 @@ export class TabView extends common.TabView {
public onUnloaded() {
trace.write("TabView.onUnloaded();", common.traceCategory);
this._removeTabsIfNeeded();
this._unsetAdapter();
super.onUnloaded();
}

View File

@@ -24,12 +24,6 @@ class UITabBarControllerImpl extends UITabBarController {
return this;
}
public viewDidAppear(animated: boolean): void {
trace.write("TabView.UITabBarControllerClass.viewDidAppear();", trace.categories.Debug);
super.viewDidAppear(animated);
this._owner.onLoaded();
}
public viewDidLayoutSubviews(): void {
trace.write("TabView.UITabBarControllerClass.viewDidLayoutSubviews();", trace.categories.Debug);
super.viewDidLayoutSubviews();