Enabled bindings to events and gestures for Bindable instead of View.

This commit is contained in:
Nedyalko Nikolov
2015-10-21 16:42:37 +03:00
parent f3dc078542
commit aef7256e69
3 changed files with 41 additions and 3 deletions

View File

@@ -4,7 +4,9 @@ import helper = require("../helper");
import builder = require("ui/builder");
import button = require("ui/button");
import PageModule = require("ui/page");
import viewModule = require("ui/core/view");
import fs = require("file-system");
import { Observable } from "data/observable";
// <snippet module="ui/action-bar" title="ActionBar">
// # ActionBar
@@ -172,6 +174,38 @@ export function test_titleView_inXML_short_definition() {
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
};
export function test_ActionBarItemBindingToEvent() {
var p = <PageModule.Page>builder.parse('<Page><Page.actionBar><ActionBar><ActionBar.actionItems><ActionItem tap="{{ test }}"/></ActionBar.actionItems></ActionBar></Page.actionBar></Page>');
var testAction = function (views: Array<viewModule.View>) {
var page = <PageModule.Page>views[0];
var firstHandlerCallCounter = 0;
var secondHandlerCallCounter = 0;
var firstHandler = function () { firstHandlerCallCounter++; };
var secondHandler = function () { secondHandlerCallCounter++; };
page.bindingContext = new Observable({ "test": firstHandler });
var actionBarItem = page.actionBar.actionItems.getItemAt(0);
TKUnit.assertEqual((<any>actionBarItem)._observers["tap"].length, 1, "There should be only one listener");
TKUnit.assertEqual((<any>actionBarItem)._observers["tap"][0].callback + "", "function () { firstHandlerCallCounter++; }", "First handler is not equal");
p.bindingContext.set("test", secondHandler);
TKUnit.assertEqual((<any>actionBarItem)._observers["tap"].length, 1, "There should be only one listener");
TKUnit.assertEqual((<any>actionBarItem)._observers["tap"][0].callback + "", "function () { secondHandlerCallCounter++; }", "Second handler is not equal");
}
helper.navigate(function () { return p; });
try {
testAction([p]);
}
finally {
helper.goBack();
}
}
export function test_Setting_ActionItems_doesnt_thrown() {
var page: PageModule.Page;