WOW thanks looks like oyu've given me just what I wanted.
On Jan 20, 10:51 am, Christophe Porteneuve <[EMAIL PROTECTED]> wrote:
> GarethAtFlignet a écrit :
>
> > Event.observe("class:method", function(event) {
> > // do something
> > });
>
> Yes, except you need to observe on a DOM node, so you'd insert, say,
> document as a first argument.
>
> > Now I understand that you can fire 'custom' events:
> > window.fire("class:method", { blah: 0 });
>
> Almost. "fire" exists only on DOM elements and the document node, so
> "document" instead of "window."
>
> The trick here is to take an existing method and turn it into the same
> method that also fires a custom event. That's AOP, and in Prototype you
> can achieve that with the wrap method. Consider this:
>
> YourClass.prototype.yourMethod = YourClass.prototype.yourMethod.wrap(
> function(proceed, arg1, arg2) {
> document.fire('your:event');
> proceed(arg1, arg2);
> }
> );
>
> Then whenever one of your instances of YourClass gets its yourMethod
> called (assuming here it takes two arguments, but customize for your
> case), it'll delegate tot he original implementation and fire the
> 'your:event' custom event on the document node. To trigger the event
> before the original behavior, just switch lines in the new function.
>
> You can also pass extra data as an additional object in 2nd argument to
> document.fire, which will be accessible through the event's memo property.
>
> To listen for the event:
>
> document.observe('your:event', function(event) { ... });
>
> 'HTH
>
> --
> Christophe Porteneuve aka TDD
> [EMAIL PROTECTED]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---