Update Panel .NET

Exploring Microsoft ASP.NET AJAX and jQuery

Posts Tagged ‘addEvent

More sugar for creating event accessors

leave a comment »

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.

Written by tzkuei

November 27, 2008 at 4:41 pm