Javascript: вызов метода, хранящегося в переменной - PullRequest
2 голосов
/ 22 ноября 2010

Я пытаюсь воспользоваться преимуществами Javascript замыканий, создав метод в одном контексте и сохранив его в глобальной переменной, чтобы его можно было вызывать позже из другого контекста.createRevertFunction "содержит состояние исходного объекта.Этот объект "eventToBeReverted" изменяется в будущем после вызова этой функции, поэтому это дает возможность восстановить оригинал в пользовательском интерфейсе без обновления страницы.

Моя проблема в том, что я не могу вызватьФункция в переменной "revertEvent".

Я пробовал:

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

и ни один из них не работает.Любая помощь будет оценена ...!

Ответы [ 4 ]

2 голосов
/ 22 ноября 2010

Я думаю, что наиболее вероятной проблемой здесь является то, что вы пытаетесь вызвать revertEvent до того, как он был установлен с помощью createRevertFunction. Чтобы проверить это, измените объявление revertEvent следующим образом

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

Появится предупреждение "еще не настроено" в случае, если оно вызывалось раньше createRevertFunction

2 голосов
/ 22 ноября 2010

make createRevertFunction возвращает внутреннюю функцию.Назначить.

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);
1 голос
/ 22 ноября 2010
>>> var revertEvent; 
undefined
>>> (function() {   revertEvent = function() { alert('hi') }   })();
undefined
>>> revertEvent()

Это работает для меня.Покажите нам, как вы используете функцию, createRevertFunction ...

0 голосов
/ 22 ноября 2010

revertEvent определяется только внутри вашей функции и впоследствии забывается. Вам придется сохранить его в глобальной переменной (которая определена вне функции) или, скорее, вернуть созданную функцию и сохранить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...