Put a test case on http://motools.net/shell with comments about what you do and 
don't want to happen.

---
Ryan Florence
http://ryanflorence.com

On Apr 1, 2010, at 6:52 PM, keeger wrote:

> Hello.
> 
> I've created a page wrapper class to contain my javascript, partly to
> avoid thrashing with global vars etc, and just organizationally i like
> it.
> 
> I'm having trouble.
> 
> I've created the class following the standard mootools class;
> 
> var pageClass = new Class( {
>     Implements: [Events],
>     globalControls:  function() {
>               this.account = $(document.body).getElement("[id
> $=txtAccount]");
>               this.randomVariable = true;
>     },
>     gControls: null,
>     initialize: function() {
>          this.gControls = new globalControls();
>          this.gControls.account.addEvent('blur', function() {
>                    //this == the account element at this point.
>                   alert(this.value);  //works
>                   alert(this.gControls.randomVariable);  //fails but
> is desired.
>        });
> });
> 
> Now, I've tried putting "this" after the function() {} in addEvent, to
> re-direct this to the object:  like so:
> 
> ...//SNIPPED
> 
>      initialize: function() {
>          this.gControls = new globalControls();
>          this.gControls.account.addEvent('blur', function() {
>                    //this == the account element at this point.
>                   alert(this.value);  //works
>                   alert(this.gControls.randomVariable);  //fails
>                   alert(this.gControls.account.value);  //would be
> acceptable if this were re-set to be the pageClass instance.
>        }, this);   //still fails.  this never points to anything but
> the account input
> 
> globalControls is an inner class to hold references to DOM elements.
> I do this, since I'm using .Net, and I have to search by [id
> $=elementName], and I don't want to slow things down by doing this
> everytime I use a control.
> 
> Interestingly enough, the very first time through (initialize),
> this.gControls is a recognized variable.  It's on the subsequent calls
> that it is not (when an actual blur happens).
> 
> So my question is this:  Is there a way inside a class to make an
> event function aware of the class?  If so, how?  I am trying to avoid
> having to use actual global variables.   The pages involved use a div
> that's populated via ajax and another page, and while I could code
> globals that are intersect free per se, I would rather a neater, more
> encapsulated approach.
> 
> Thanks for any help
> 
> 
> -- 
> To unsubscribe, reply using "remove me" as the subject.

Reply via email to