@@ -30,6 +30,8 @@ var DOCK = "dock";
30
30
var LEFT = "left" ;
31
31
var TOP = "top" ;
32
32
33
+ var eventHandlers , gestureHandlers = { } ;
34
+
33
35
export function getComponentModule ( elementName : string , namespace : string , attributes : Object , exports : Object ) : definition . ComponentModule {
34
36
var instance : view . View ;
35
37
var instanceModule : Object ;
@@ -103,6 +105,8 @@ export function getComponentModule(elementName: string, namespace: string, attri
103
105
}
104
106
}
105
107
108
+ eventHandlers , gestureHandlers = { } ;
109
+
106
110
componentModule = { component : instance , exports : instanceModule , bindings : bindings } ;
107
111
}
108
112
@@ -180,34 +184,34 @@ export function setPropertyValue(instance: view.View, instanceModule: Object, ex
180
184
181
185
function attachEventBinding ( instance : view . View , eventName : string , value : string ) {
182
186
// Get the event handler from instance.bindingContext.
183
- var propertyChangeHandler = ( args : observable . PropertyChangeData ) => {
187
+ eventHandlers [ eventName ] = ( args : observable . PropertyChangeData ) => {
184
188
if ( args . propertyName === "bindingContext" ) {
185
189
var handler = instance . bindingContext && instance . bindingContext [ getBindingExpressionFromAttribute ( value ) ] ;
186
190
// Check if the handler is function and add it to the instance for specified event name.
187
191
if ( types . isFunction ( handler ) ) {
188
192
instance . on ( eventName , handler , instance . bindingContext ) ;
189
193
}
190
- instance . off ( observable . Observable . propertyChangeEvent , propertyChangeHandler ) ;
194
+ instance . off ( observable . Observable . propertyChangeEvent , eventHandlers [ eventName ] ) ;
191
195
}
192
196
} ;
193
197
194
- instance . on ( observable . Observable . propertyChangeEvent , propertyChangeHandler ) ;
198
+ instance . on ( observable . Observable . propertyChangeEvent , eventHandlers [ eventName ] ) ;
195
199
}
196
200
197
201
function attachGestureBinding ( instance : view . View , gestureName : string , value : string ) {
198
202
// Get the event handler from instance.bindingContext.
199
- var propertyChangeHandler = ( args : observable . PropertyChangeData ) => {
203
+ gestureHandlers [ gestureName ] = ( args : observable . PropertyChangeData ) => {
200
204
if ( args . propertyName === "bindingContext" ) {
201
205
var handler = instance . bindingContext && instance . bindingContext [ getBindingExpressionFromAttribute ( value ) ] ;
202
206
// Check if the handler is function and add it to the instance for specified event name.
203
207
if ( types . isFunction ( handler ) ) {
204
208
instance . observe ( gestures . fromString ( gestureName . toLowerCase ( ) ) , handler , instance . bindingContext ) ;
205
209
}
206
- instance . off ( observable . Observable . propertyChangeEvent , propertyChangeHandler ) ;
210
+ instance . off ( observable . Observable . propertyChangeEvent , gestureHandlers [ gestureName ] ) ;
207
211
}
208
212
} ;
209
213
210
- instance . on ( observable . Observable . propertyChangeEvent , propertyChangeHandler ) ;
214
+ instance . on ( observable . Observable . propertyChangeEvent , gestureHandlers [ gestureName ] ) ;
211
215
}
212
216
213
217
function isGesture ( name : string , instance : any ) : boolean {
0 commit comments