Posts Tagged ‘addEvent’
More sugar for creating event accessors
In my previous post I shared some sugar for creating property accessors. In this post I will share more sugar for creating event accessors.
So instead of writing:
MyNamespace.MyComponent.prototype = {
...
add_change: function(handler) {
this.get_events().addHandler("change", handler);
},
remove_change: function(handler) {
this.get_events().removeHandler("change", handler);
},
...
}
You just add:
MyNamespace.MyComponent.addEvent("change");
Here is the extra sugar:
Function.prototype.addEvent = function(name) {
///
<param name="name" type="String"></param>
var e = Function._validateParams(arguments, [
{ name: "name", type: String }
]);
if (e) throw e;
this.addMethod("add_" + name, function(handler) {
this.get_events().addHandler(name, handler);
});
this.addMethod("remove_" + name, function(handler) {
this.get_events().removeHandler(name, handler);
});
this.addMethod("raise_" + name, function(args) {
var handler = this.get_events().getHandler(name);
if (handler) {
handler(this, (args) ? args : Sys.EventArgs.Empty);
}
});
}
Type.addEvent(name)
Adds event accessors to the component “class”.
UPDATE: Added a raise_<eventName>(args) helper method.
Download Sugar.js from my SkyDrive.