Skip to content

Commit aecb60a

Browse files
committed
refactor(core): use Function.bind for referring to event listeners instead of a closure.
1 parent 4d691b6 commit aecb60a

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

modules/angular2/src/compiler/view_compiler/event_binder.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,9 @@ export class CompileEventListener {
8383

8484
listenToRenderer() {
8585
var listenExpr;
86-
var eventListener = o.THIS_EXPR.callMethod('eventHandler', [
87-
o.fn([this._eventParam],
88-
[
89-
new o.ReturnStatement(
90-
o.THIS_EXPR.callMethod(this._methodName, [EventHandlerVars.event]))
91-
],
92-
o.BOOL_TYPE)
93-
]);
86+
var eventListener = o.THIS_EXPR.callMethod(
87+
'eventHandler',
88+
[o.THIS_EXPR.prop(this._methodName).callMethod(o.BuiltinMethod.bind, [o.THIS_EXPR])]);
9489
if (isPresent(this.eventTarget)) {
9590
listenExpr = ViewProperties.renderer.callMethod(
9691
'listenGlobal', [o.literal(this.eventTarget), o.literal(this.eventName), eventListener]);
@@ -107,10 +102,9 @@ export class CompileEventListener {
107102
listenToDirective(directiveInstance: o.Expression, observablePropName: string) {
108103
var subscription = o.variable(`subscription_${this.compileElement.view.subscriptions.length}`);
109104
this.compileElement.view.subscriptions.push(subscription);
110-
var eventListener = o.THIS_EXPR.callMethod('eventHandler', [
111-
o.fn([this._eventParam],
112-
[o.THIS_EXPR.callMethod(this._methodName, [EventHandlerVars.event]).toStmt()])
113-
]);
105+
var eventListener = o.THIS_EXPR.callMethod(
106+
'eventHandler',
107+
[o.THIS_EXPR.prop(this._methodName).callMethod(o.BuiltinMethod.bind, [o.THIS_EXPR])]);
114108
this.compileElement.view.createMethod.addStmt(
115109
subscription.set(directiveInstance.prop(observablePropName)
116110
.callMethod(o.BuiltinMethod.SubscribeObservable, [eventListener]))

0 commit comments

Comments
 (0)