2009-08-04 6 views
0

Je crée une nouvelle instance de l'objet 'Draggable' (à partir du module dragDrop script.aculo.us) à l'intérieur d'une fonction appartenant à un objet que j'ai créé. Appelons cet objet l'objet 'Personne'. Assez facile. Cependant, depuis l'intérieur de la fonction 'onEnd' dans l'objet Draggable, j'ai besoin d'appeler une autre fonction, getCell(), appartenant également à l'objet 'Person' mentionné ci-dessus. Je sais, mais je voudrais savoir comment faire. Rien que j'ai essayé fonctionne. Peut-il être fait? Voici un exemple fortement édité pour la brièveté mais j'espère qu'il traduit mon intention. Je serais reconnaissant pour toute idée ici. Merci.Comment appeler une fonction appartenant à un autre objet en JavaScript (en utilisant script.aculo.us)

var Person = Class.create({ 
    initialize: function(name) { 
    this.name = name; 
    },   
    move: function(p) { 
    p = new Draggable(p, {  
    onEnd: function(d) {  
     var pos = getCell(d.element); 
     ....... 
     ....... 
    } 
    ....... 
    ....... 
    }); 
    }, 
    getCell: function(t) { 
    var pos = t.positionedOffset(); 
    return [(pos.left/64).floor(), (pos.top /64).floor()]; 
    } 
});  

Répondre

0

essayer Function.bind:

var Person = Class.create({ 
    initialize: function(name) { 
    this.name = name; 
    },   
    move: function(p) { 
    p = new Draggable(p, {  
    onEnd: function(d) {  
     var pos = this.getCell(d.element); 
     ....... 
     ....... 
    }.bind(this) 
    ....... 
    ....... 
    }); 
    }, 
    getCell: function(t) { 
    var pos = t.positionedOffset(); 
    return [(pos.left/64).floor(), (pos.top /64).floor()]; 
    } 
}); 
0

essayer

move: function(p) { 
    p = new Draggable(p, {  
    onEnd: function(d) {  
     var pos = p.getCell(d.element); 
     ....... 
     ....... 
    } 
    ....... 
    ....... 
    }); 
    }, 

ou

move: function(p) { 
    var getCell = function (el) { 
     return p.getCell (el); 
    }; 

    p = new Draggable(p, {  
    onEnd: function(d) {  
     var pos = getCell(d.element); 
     ....... 
     ....... 
    } 
    ....... 
    ....... 
    }); 
    }, 
Questions connexes