2009-05-13 5 views
0

Y at-il de toute façon à appeler une fonction d'une autre fonction .. peu difficile à expliquer. heres dans l'exemple. Une fonction charge la page html et lorsqu'elle est prête, elle appelle la fonction d'origine.appelant une fonction javascript (dans la fonction d'origine) de la fonction appelée?

Je pense que je dois passer dans une référence, mais ne savez pas comment faire ... si je le mettre à « ce » - il ne semble pas fonctionner

des idées?

order.prototype.printMe = function(){ 
    order_resume.loadthis("myTestPage.html", "showData"); 
} 

order.prototype.testme= function(){ 
    alert("i have been called"); 
} 

//Then when in "loadthis" need to call 

orderRsume.prototype.loadthis= function(){ 
    // DO SOME STUFF AND WHEN LOADS IT ARRIVES IN OnReady 
} 

order.prototype.OnReady= function(){ 
    /// NEED TO CALL ORIGINAL "testme" in other function 
} 

Répondre

3

Ce n'est pas clair pour moi ce que vous voulez vraiment faire. Dans les fonctions JS sont first-class objects. Ainsi, vous pouvez passer la fonction en tant que paramètre à une autre fonction:

Cook("lobster", 
    "water", 
    function(x) { alert("pot " + x); }); 

order.somefunc = function(){ 
    // do stuff 
} 

order.anotherone = function(func){ 
    // do stuff and call function func 
    func(); 
} 

order.anotherone(order.somefunc); 

Et si vous avez besoin de se référer à la fonction sans nom de celui-ci de son corps, la syntaxe suivante devrait fonctionner:

order.recursivefunc = function f(){ 
    // you can use f only in this scope, afaik 
    f(); 
}; 
+0

merci beaucoup .. –

0

J'ai légèrement modifié la signature de votre fonction loadthis en lui permettant de passer l'ordre de chargement réel.

J'ai également supposé que votre fonction doSomeStuff accepte une fonction de rappel. J'ai supposé que ce pourrait être un appel AJAX donc ce serait trivial d'appeler une fonction de rappel à la fin de l'appel AJAX. Commentez cette réponse si vous avez besoin de plus d'informations sur la façon de déclencher cette fonction de rappel à partir de votre appel AJAX.

order.prototype.printMe = function(){ 
    order_resume.load(this, "myTestPage.html", "showData"); 
} 

order.prototype.testme= function(){ 
    alert("i have been called"); 
} 

//Then when in "loadthis" need to call 

orderRsume.prototype.load = function(order, page, action){ 
    // DO SOME STUFF AND WHEN LOADS IT ARRIVES IN OnReady 
    doSomeStuff(page, action, function() 
    { 
     order.OnReady(); 
    }); 
} 

order.prototype.OnReady= function(){ 
    /// NEED TO CALL ORIGINAL "testme" in other function 
    this.testme(); 
} 
Questions connexes