2016-03-24 2 views
1

Когда вызывается Turbolinks.visit, появляется индикатор выполнения.Turbolinks 5: Показать прогресс Бар

Я хочу показать и скрыть его вручную (потому что некоторые из моих запросов xhr немного длиннее), возможно ли это?

(В Turbolinks 3, был Turbolinks.ProgressBar.start(), но это не было публичным апи и больше не работает)

ответ

2

Turbolinks 5 имеет экземпляр ProgressBar глубже в объекте контроллера Singleton. Должно работать следующее:

function safeStartTurbolinksProgress() { 
    if(!Turbolinks.supported) { return; } 
    Turbolinks.controller.adapter.progressBar.setValue(0); 
    Turbolinks.controller.adapter.progressBar.show(); 
} 

function safeStopTurbolinksProgress() { 
    if(!Turbolinks.supported) { return; } 
    Turbolinks.controller.adapter.progressBar.hide(); 
    Turbolinks.controller.adapter.progressBar.setValue(100); 
} 
0

Вы можете сделать Turbolinks.ProgressBar.disable() в любой момент и сделать его уйти. Или вы даже можете сделать свой собственный индикатор прогресса, добавив классы на этих этапах и используя некоторые CSS-мастера.

if Turbolinks.ProgressBar 
    // Do stuff 

$(document).on 'page:fetch', -> 
    // Do stuff while the fetch is starting 

$(document).on 'page:receive', -> 
    // It's almost done 

$(document).on 'page:change', -> 
    // It's done 

$(document).on 'page:restore', -> 
    // It's really done 
0

В Rails 5 (Turbolinks 5) индикатор выполнения включен по умолчанию. Он появляется автоматически для любой страницы, которая занимает больше 500 мс для загрузки.

Чтобы отключить индикатор полностью, установите его стиль видимость скрытых:

.turbolinks-progress-bar { 
    visibility: hidden; 
} 

Подробнее here.

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