2013-04-18 2 views
2

Я пытаюсь использовать turbolinks в рельсах 3 приложения. Все в порядке, за исключением того, что Alertify перестает работать после смены страницы.получать уведомления о работе с turbolinks

Я установил драгоценный камень jquery-turbolinks, чтобы исправить его, но это не повлияло.

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

У кого-нибудь есть проблемы с турбонагнетателями?

ответ

2

Тот, кто сталкивается с этим с Alertify 0.4.0 (в настоящее время RC1) может решить эту проблему, переустановку элементы Alertify вы используете. В моем случае это было Alertify.dialog:

Alertify.dialog.el = false 
// Do your normal JS stuff 

В моем неочищенном понимании этого Alertify считает, что элемент диалога был создан, но когда Turbolinks загружает страницу, он уничтожает этот элемент. Нам нужно сказать, что Alertify был уничтожен, и Alertify воссоздает его.

Если вам нужна помощь по специфике, сообщите мне.

+0

Ты спас мой день! Просто хедз-ап для любого, кто собирается от предупреждения 3.x до 4, 'alertify' больше не живет в глобальном пространстве имен. Если вы хотите, чтобы все снова работало по-прежнему, добавьте это 'alertify = Alertify.dialog'. – wout

1

Насколько я могу судить, Turbolinks вмешивается в глобальную область действия, что предотвращает правильное подключение предупреждений к DOM.

Моя работа вокруг таким образом:

//Keep global reference to alertify init() function 
    $(document).on('ready',function(){ 
    window alertifyInit = alertify.init; 
    }); 
    //re-initialise on page change/load 
    $(document).on('page:change page:load',function(){ 
     alertifyInit(); 
    }); 
+0

Это не сработало для меня. В результате исправления произошла другая ошибка, в которой был указан старый экземпляр alertify и не удалось найти. – wout

Смежные вопросы