Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Turbolinks&;拉达_Jquery_Ruby On Rails_Turbolinks - Fatal编程技术网

Jquery Turbolinks&;拉达

Jquery Turbolinks&;拉达,jquery,ruby-on-rails,turbolinks,Jquery,Ruby On Rails,Turbolinks,我试图在Rails应用程序中使用和。ladda文件规定: “如果您将对正在加载的窗体使用加载动画 提交到服务器(总是导致页面重新加载),您可以 使用bind()方法“ 这就是我在实现TurboLink之前所做的。Turbolinks可以自动处理大多数简单的get请求,但对于表单提交,我将表单切换到remote,只需将页面的主div重新呈现出来,如自述文件所示。总的来说,这很有效 但是,如果用户在执行此操作后单击“后退”按钮,ladda按钮仍处于禁用、灰色和加载程序图像状态。我不想依赖计时器 因为

我试图在Rails应用程序中使用和。ladda文件规定:

“如果您将对正在加载的窗体使用加载动画 提交到服务器(总是导致页面重新加载),您可以 使用bind()方法“

这就是我在实现TurboLink之前所做的。Turbolinks可以自动处理大多数简单的get请求,但对于表单提交,我将表单切换到remote,只需将页面的主div重新呈现出来,如自述文件所示。总的来说,这很有效

但是,如果用户在执行此操作后单击“后退”按钮,ladda按钮仍处于禁用、灰色和加载程序图像状态。我不想依赖计时器

因为我没有像上面引用的那样重新加载页面,所以我尝试在没有bind方法的情况下激活Ladda。但我能想到的唯一其他方法是在onclick上激活Ladda

但出于某种原因,如果我将onclick绑定到submit按钮,它会断开turbolinks,表单根本不会提交

$(document).on('click', '.ladda-button', function() {
  $(this).ladda('start');
});
这将激活ladda,但表单不会提交。我使用的是jquery TurboLink,所以代码应该可以工作

另一个方向是通过bind方法继续使用Ladda,然后在通过Turbolinks“加载”页面之前重置任何Ladda图像。我做到了以下几点:

$(document).on("page:before-unload", function() {
  $(".ladda-button").ladda();
  $(".ladda-button").ladda("stop");
});
如果我在调试器中设置了一个断点,我可以看到在下一页通过Turbolinks加载之前,它成功地将按钮重置为其原始状态。但当我回击时,加载程序返回到其停用/灰色/加载状态

我不想将我的整个应用程序作为客户端javascript MVC和API后端重新编写,但我真的希望它有一种快速、无页面刷新的感觉——并使用那些很棒的ladda加载图像。到目前为止,Turbolinks 3.0非常棒,但我真的被这个问题难住了

任何帮助都将不胜感激


编辑:我刚刚意识到,如果用户回击,我的所有JS都会被破坏。

这里有一个更大的问题-当按下后退或前进时,没有脚本运行。装载机只是我第一次注意到的

此处实施了一个变通/修复:

您需要在脚本标记上使用“data turbolinks eval=true”来启动JS,即使它是一个页面后退/前进

然后在那里重新初始化ladda/加载映像

<script data-turbolinks-eval=always>
  $(".ladda-button").ladda();
  $(".ladda-button").ladda('stop');
  $(".ladda-button").ladda('bind');
</script>

$(“.ladda按钮”).ladda();
$(“.ladda按钮”).ladda('stop');
$(“.ladda按钮”).ladda('bind');

您在哪里找到TurboLink 3?我不知道它已经发布了,我还没有在下看到它。现在可以通过在gemfile中添加:gem'turbolinks',git:''来使用3.0版