2010-11-22 7 views
2

Ich versuche, Javascript-Schließungen zu nutzen, indem ich eine Methode in einem Kontext erstelle und sie in einer globalen Variablen speichere, so dass sie später aus einem anderen Kontext aufgerufen werden kann.Javascript: Aufruf einer in einer Variablen gespeicherten Methode

//Global variable to hold the function 
var revertEvent; 

//creates the function and assigns it to the global variable 
function createRevertFunction(eventToBeReverted) { 

      revertEvent = function() { 
       alert("Now Restoring Event"); 
       $('#calendar').fullCalendar('renderEvent', eventToBeReverted, true); 
      }   
    } 

Also, die "createRevertFunction" hält den Zustand des ursprünglichen Objekts. Das Objekt "eventToBeReverted" wird nach dem Aufruf dieser Funktion modifiziert, so dass das Original auf der Benutzeroberfläche wiederhergestellt werden kann, ohne dass die Seite aktualisiert werden muss.

Mein Problem ist, dass ich nicht scheinen kann, die Funktion in der Variablen "revertEvent" aufzurufen.

Ich habe versucht:

revertEvent(); 
revertEvent.call(); 
window[revertEvent](); 

und keiner von ihnen arbeiten. Jede Hilfe wäre willkommen ...!

Antwort

2

denke ich, das wahrscheinlichste Problem hier ist, dass Sie versuchen, revertEvent aufrufen, bevor es über createRevertFunction eingestellt worden ist. Diese Änderung der Erklärung von revertEvent Um zu überprüfen, wie

var revertEvent = function() { alert('not set yet'); } 

folgt Dadurch wird der Alarm „nicht seet noch“ im Fall Pop-up, bevor createRevertFunction

+0

Ich denke, das war es. +1 für die Debugging-Tipp ... – tpow

+0

Ich würde auch denken, dass dies sein Problem ist. @cinqoTimo wenn Sie genau in Ihrem Code versuchen, die Funktion revertEvent aufzurufen und wann rufen Sie createRevertFunction auf? – philgiese

0

revertEvent ist nur innerhalb Ihrer Funktion definiert und wird anschließend vergessen. Sie müssen es in einer globalen Variablen speichern (die außerhalb der Funktion definiert ist) oder die erstellte Funktion zurückgeben und speichern.

+0

revertEvent definiert ist, nicht in einer Funktion aufgerufen wird, und sollte globaler Geltungsbereich. – tpow

+0

"revertvent" ist in diesem Beispiel keine lokale Bereichsvariable. –

+0

Lol Entschuldigung, Sie haben Recht, Jungs, nicht gut genug gelesen. Odd then .. wird bearbeitet, wenn gefunden Antwort –

1
>>> var revertEvent; 
undefined 
>>> (function() { revertEvent = function() { alert('hi') } })(); 
undefined 
>>> revertEvent() 

Das funktioniert für mich. Zeigen Sie uns Ihre Verwendung der Funktion createRevertFunction ...

2

make createRevertFunction gibt die Innenfunktion zurück. Zuordnen.

var revertEvent; 

//returns the function so we can do whatever with it 
function createRevertFunction(eventToBeReverted) { 

     return function() { 
      alert("Now Restoring Event"); 
      $('#calendar').fullCalendar('renderEvent', eventToBeReverted, true); 
     }   
    } 


revertEvent = createRevertFunction(e); 
Verwandte Themen