On 6/20/07, TiNo <[EMAIL PROTECTED]> wrote:
>
> With the following code (shortend):
> --------------------------------------------------------------------------
> var EditGrid = function (base_url, target_id) {
>         bindMethods(this);
>         this.base_url = base_url;
>         this.target_id = target_id;
>         this.editing = false;
>         this.direction = 6; //forward, see your numpad
>         this.editcell = null;
>
>         this.render();
> }
>
> EditGrid.prototype = {
>
>         render : function(params) {
>                 params = params || {};
>                 params = eval(params);
>                 params['tg_random'] = new Date().getTime();
>                 params['tg_format'] = "json";
>                 var d = loadJSONDoc(this.base_url + '/get_data', params);
>                 d.addCallback(this.createGrid);
>                 return d;
>         },
>
>         createGrid : function(response) {
>                 var grid = Widget.editgrid.render(this.target_id, response);
>                 swapDOM(this.target_id, grid);
>                 connect(window,'onkeydown',this.handleKey);
>         },
>
>         editCell : function(e) {
>                 [...]
>         },
>
>         handleKey : function(e) {
>                 [...]
>                 if(e.key()['string'] == 'KEY_ESCAPE')
>                 {
>                         this.abort()
>                         e.stop()
>                 }
>                 [...]
>         },
>
>         abort : function(e){
>                 var editcell = this.editcell;
>                 if(!this.editing) return;
>                 
> swapDOM(editcell.firstChild,document.createTextNode(this.original));
>                 this.editing = false;
>                 this.original = null;
>                 this.editcell = null;
>                 if(e)e.stop();
>
>         }
>         [etc...]
> }
> -----------------------------------------------------------------------------
>
> I have the following problem: the 'this' variable is overwritten by
> the EditGrid function every time one of its methods is called.
> Example: editCell is called on onclick on a tablecell, it thereby sets
> this.editcell to the target cell, and this.editing to true. But when
> the handleKey method is called by a onkeydown, this.editing is set to
> false, and this.editcell to null, like the values they had initially.
>
> What am I doing wrong?

There was a bug in connect that interfered with bind(). You can either
upgrade to the latest svn trunk, or change this:
    connect(window,'onkeydown',this.handleKey);

to this:
    connect(window,'onkeydown',this, 'handleKey');

-bob

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MochiKit" 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/mochikit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to