diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj
index 2dc308c0b..ee277bb4c 100644
--- a/CrossPlatformModules.csproj
+++ b/CrossPlatformModules.csproj
@@ -146,6 +146,7 @@
+
animation.d.ts
@@ -934,6 +935,7 @@
+
diff --git a/apps/ui-tests-app/pages/gesture-binding.ts b/apps/ui-tests-app/pages/gesture-binding.ts
new file mode 100644
index 000000000..1b537c0a2
--- /dev/null
+++ b/apps/ui-tests-app/pages/gesture-binding.ts
@@ -0,0 +1,16 @@
+import observable = require("data/observable");
+import gestures = require("ui/gestures");
+import pages = require("ui/page");
+
+export function pageLoaded(args: observable.EventData) {
+ var page = args.object;
+ page.bindingContext = { tapAction: tapAction, doubleTapAction: doubleTapAction };
+}
+
+export function tapAction(args: gestures.GestureEventData) {
+ console.log("tapAction")
+}
+
+export function doubleTapAction(args: gestures.GestureEventData) {
+ console.log("doubleTapAction")
+}
\ No newline at end of file
diff --git a/apps/ui-tests-app/pages/gesture-binding.xml b/apps/ui-tests-app/pages/gesture-binding.xml
new file mode 100644
index 000000000..275055a40
--- /dev/null
+++ b/apps/ui-tests-app/pages/gesture-binding.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ui/builder/component-builder.ts b/ui/builder/component-builder.ts
index a8d4fae81..9274fd903 100644
--- a/ui/builder/component-builder.ts
+++ b/ui/builder/component-builder.ts
@@ -30,6 +30,9 @@ var DOCK = "dock";
var LEFT = "left";
var TOP = "top";
+var eventHandlers = {},
+ gestureHandlers = {};
+
export function getComponentModule(elementName: string, namespace: string, attributes: Object, exports: Object): definition.ComponentModule {
var instance: view.View;
var instanceModule: Object;
@@ -103,6 +106,8 @@ export function getComponentModule(elementName: string, namespace: string, attri
}
}
+ eventHandlers, gestureHandlers = {};
+
componentModule = { component: instance, exports: instanceModule, bindings: bindings };
}
@@ -180,34 +185,34 @@ export function setPropertyValue(instance: view.View, instanceModule: Object, ex
function attachEventBinding(instance: view.View, eventName: string, value: string) {
// Get the event handler from instance.bindingContext.
- var propertyChangeHandler = (args: observable.PropertyChangeData) => {
+ eventHandlers[eventName] = (args: observable.PropertyChangeData) => {
if (args.propertyName === "bindingContext") {
var handler = instance.bindingContext && instance.bindingContext[getBindingExpressionFromAttribute(value)];
// Check if the handler is function and add it to the instance for specified event name.
if (types.isFunction(handler)) {
instance.on(eventName, handler, instance.bindingContext);
}
- instance.off(observable.Observable.propertyChangeEvent, propertyChangeHandler);
+ instance.off(observable.Observable.propertyChangeEvent, eventHandlers[eventName]);
}
};
- instance.on(observable.Observable.propertyChangeEvent, propertyChangeHandler);
+ instance.on(observable.Observable.propertyChangeEvent, eventHandlers[eventName]);
}
function attachGestureBinding(instance: view.View, gestureName: string, value: string) {
// Get the event handler from instance.bindingContext.
- var propertyChangeHandler = (args: observable.PropertyChangeData) => {
+ gestureHandlers[gestureName] = (args: observable.PropertyChangeData) => {
if (args.propertyName === "bindingContext") {
var handler = instance.bindingContext && instance.bindingContext[getBindingExpressionFromAttribute(value)];
// Check if the handler is function and add it to the instance for specified event name.
if (types.isFunction(handler)) {
instance.observe(gestures.fromString(gestureName.toLowerCase()), handler, instance.bindingContext);
}
- instance.off(observable.Observable.propertyChangeEvent, propertyChangeHandler);
+ instance.off(observable.Observable.propertyChangeEvent, gestureHandlers[gestureName]);
}
};
- instance.on(observable.Observable.propertyChangeEvent, propertyChangeHandler);
+ instance.on(observable.Observable.propertyChangeEvent, gestureHandlers[gestureName]);
}
function isGesture(name: string, instance: any): boolean {