Не удается получить обратный вызов on_complete в in_place_editor для работы - PullRequest
0 голосов
/ 13 декабря 2011

Я использую возможность in_place_editor в приложении Rails. При возвращении из вызова Ajax на сервер, где были обновлены объекты базы данных, я хотел бы использовать обратный вызов: on_complete, чтобы сделать некоторые дополнительные обновления в представлении. К сожалению, я не могу заставить работать: on_complete.

Для проверки вот что я имею в виду:

<%= in_place_editor_field "localization", 'sv', {}, {:cols => 11, :on_complete => 'function() {alert(1);}'} %>

Не работает, и консоль Javascript сообщает:

Uncaught TypeError: Object function() {alert(1);} has no method 'bind'

Делаем это:

<%= in_place_editor_field "localization", 'sv', {}, {:cols => 11, :on_complete => 'alert(1);'} %>

Результаты:

Uncaught TypeError: Object alert(1); has no method 'bind'

Кто-нибудь может сказать, что здесь происходит? У кого-нибудь есть пример использования on_complete?

1 Ответ

0 голосов
/ 14 декабря 2011

Если другие столкнутся с той же проблемой, я сделаю уродливый обходной путь, которым я пользуюсь, пока кто-нибудь не придумает лучшего ответа.Я пропатчил scriptaculous controls.js, чтобы проверить, существует ли определенный обратный вызов при завершении и есть ли необходимость его вызвать, следующим образом:

wrapUp: function(transport) {
this.leaveEditMode();
// Can't use triggerCallback due to backward compatibility: requires
// binding + direct element
// Beginning of ugly patch:
    if(typeof editOnComplete == 'function') { 
        editOnComplete(this.element); 
    }
// End of ugly patch
this._boundComplete(transport, this.element);

}});

...