Я создаю приложение Rails 4 и использую Turbolinks Classic (еще не обновлен до Turbolinks 5).Турболинкс (классический) стрельба JS-событие на странице: fetch
Я хотел бы добавить спиннера анимацию на мою страницу при загрузке новой страницы, так что в моем файле JS я добавил:
$(document).on "page:fetch", ->
$("#main").html("<div class='page-loader-container'><div class='spinner spinner-primary'></div></div>")
Где #main
является контейнером для ядра моего приложения.
Это отлично работает при переходе от ссылки к ссылке; Turbolinks срабатывает, spinner заменяет содержимое, когда Turbolinks получает новое содержимое, которое заменяет все просто отлично.
Однако, когда я использую кнопку браузера, отображается счетчик, но кешированный HTML никогда не заменяет страницу.
Я просмотрел документы Turbolinks, а также документы плагина jQuery и не могу понять это.
То, что я пытаюсь сделать, это выполнить только мой код spinner, когда Turbolinks действительно получает новую страницу; при загрузке страницы из кеша мне не нужен прядильщик, потому что это должно происходить так быстро, что пользователям не нужно уведомлять об этом.
Обновление 2016-12-14 13:40
Когда я использую Turbolinks.enableProgressBar();
прогресс бар работает, как я бы ожидать: он загружается при выборе новых страниц, но он не показывает вообще при загрузке кэшированных страниц , Я использую это сейчас, и он «работает».
Однако я хотел бы копаться в исходном коде и узнать, как они обрабатывают события для индикатора выполнения, потому что я думаю, что те же события, которые я хотел бы использовать для моего счетчика.
@Igroschen: Спасибо за ответ, но я уже прочитал страницу документов и не нашел ничего, что могло решить мою конкретную проблему. Мне, возможно, придется сделать несколько причудливых show/hide элементов вместо замены элемента. –
Да, я надеялся, что этот параграф поможет, но, возможно, в Turbolinks 5 будут варианты. Надеюсь, ты понял, извини, что я не мог больше помочь – lgroschen