Turbolinks 5:显示进度栏

时间:2016-03-24 04:23:13

标签: ruby-on-rails turbolinks

调用Turbolinks.visit时有一个进度条。

我想手动显示和隐藏它(因为我的一些xhr请求有点长),是否可能?

(在Turbolinks 3中,有Turbolinks.ProgressBar.start();但它不是公共API并且不再工作了)

3 个答案:

答案 0 :(得分:8)

Turbolinks 5在单例控制器对象中具有更深入的ProgressBar实例。以下应该有效:

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);
}

答案 1 :(得分: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

答案 2 :(得分:0)

在Rails 5(Turbolinks 5)中,默认情况下启用进度条。对于任何需要超过500毫秒的页面,它会自动显示。

要完全禁用进度条,请将其可见性样式设置为隐藏:

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

更多信息here