【发布时间】:2016-09-27 00:56:42
【问题描述】:
我在网上看了很多帖子,但最后我还是没有找到一个很好的解决方案来处理 Turbolinks + 内联脚本。
Turbolinks 确实给人一种很好的感觉,我真的不想停止使用它,但在某些情况下,我很难调试重复的事件处理程序。
我对内联 javascript 有一些看法:我实际上更喜欢在与之交互的元素附近放置(小)javascript 代码,只为 app.js 保存大型 javascripts 函数。
想象一下,我有一个包含多个过滤器的搜索页面,但仅限于该特定页面。当用户更改搜索过滤器时,它应该获取(使用远程/AJAX)新结果。最简单的方法是引入
$(document).on('ready turbolinks:load', function() {
// Submit on every change
$('#myform input').change(function() {
$('#myform').submit()
}
})
当使用 turbolink 导航并返回搜索页面时,我自然会在每次选择时遇到多个重复绑定,从而导致多次提交表单。
我已经尝试添加
$('#sidebar-search input').unbind()
就在.change() 行之前,但它似乎不起作用,并且由于某种原因,该表单仍被多次发布:一次使用 AJAX,其他几个重复项(谢天谢地被取消)和另一个非远程请求(我的服务器用 HTML 回复)。
使用 turbolinks 5
【问题讨论】:
-
您的 JS 有不平衡的花括号 - 它缺少
}。但既然你没有注意到语法错误,那可能只是一个糟糕的复制粘贴。
标签: javascript jquery ajax turbolinks ruby-on-rails-5