turbolinks:加载事件不触发远程真正的呼叫,导轨,jQuery的
问题描述:
我在app/assets/javascripts/media_preview_script.js
turbolinks:加载事件不触发远程真正的呼叫,导轨,jQuery的
$(document).on('turbolinks:load', function() {
$("#cat").on('click', function() {
showBrowseInput()
})
})
function showBrowseInput() {
do stuff here
}
据说turbolinks:load
一个简单的js文件,使这个脚本附加上第一页的负荷,那么任何turbolinks后调用,但它不会这样做。它仅在页面加载时才加载,然后任何remote: true
调用返回事件未附加。这与我在应用中使用的任何脚本都是一样的。
这是因为$(document).on('turbolinks:load'...
在开始,当我删除这个,如果我包含文件在视图窗体<%= javascript_include_tag "file_name" %>
我没有得到双重附件文件和事件将附加每个js调用或页面加载。所以我的问题是,javascript_include_tag在turbolinks函数中添加了吗?或者任何人都可以告诉我这里发生了什么。我使用的轨道5
布局/ application.html.erb
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
答
我认为这个问题是remote: true
使得它所有的工作与阿贾克斯。您可以处理您要使用此代码的事件:
$('form').ajaxError(function(event, request, settings) {
// your code
})
$('form').bind('ajax:success', function(evt, data, status, xhr){
// your code
})
中陈述https://*.com/a/8956770/2162591
UPDATE:
我用这个解决方案得到的唯一的问题是,AJAX:成功的页面之前触发完全刷新。我用这个代码来代替:
$('form').bind('turbolinks:request-end', function(evt, data, status, xhr){
// your code
});
真的,我正在混淆turbolinks和remote:true。谢谢! –