假设你在rails中有这样的链接:
<%= link_to "Next page", url_for(controller: controller_name, action: 'step2'), remote: true, method: :post %>
这将成为属性data-remote="true"
的链接。具有此属性的链接应该进行AJAX调用。
如果页面加载时它们在DOM中,它们就会这样做。 rails JS将运行,解析data-remote
属性,并设置一个监听器以将单击转换为ajax调用。
但是,如果动态加载此链接,则会在rails js运行后将其插入到DOM中并解析所有内容。这意味着,如果您动态加载此链接,则单击它时不会进行ajax调用。它只是将整个窗口重定向到链接。
我可以手动调用rails js提供的某些功能,它会重新解析这些data-remote
属性的dom,并确保它们都会进行ajax调用吗?
答案 0 :(得分:2)
你不需要做任何事情。
rails js在加载时不会“解析”文档,而是将事件绑定到文档。因此,如果您创建新元素并触发某个事件,它仍然会冒泡并继续工作(例如.live()
中已弃用的jQuery
方法)。
您可以在line 290 of the rails js脚本
中查看此操作$(document).delegate(rails.linkClickSelector, 'click.rails', function(e) {
只要您正确定义回调(例如ajax:success
,ajax:complete
等),一切都应该是花花公子。
有关详细信息,请查看: