首页 > 解决方案 > Rails turbo 帧响应未触发 turbo:load

问题描述

我有一个使用Turboshow的标准内联编辑,它将视图的涡轮框架替换为_form. 但$(document).on "turbo:load", ->在这种情况下,事件不会触发。

我没有看到另一个应该使用的事件。任何想法如何在替换涡轮框架的响应上运行 js?(例如在表单中初始化日期选择器)

标签: ruby-on-railshotwire-railsturbo-railsturbo-frames

解决方案


框架加载时触发的事件仍在构建中:https ://github.com/hotwired/turbo/pull/59

我们目前拥有的唯一事件是turbo:before-fetch-requestand ,每次 Turbo 更改框架或导航页面时都会turbo:before-fetch-response在关卡中触发。document框架的内容在事件触发时不会被加载,但它允许您潜在地使用框架的loaded属性来连接在框架加载时运行的承诺。

$(document).on("turbo:before-fetch-response", (e) ->
  frame = document.getElementById("myFrame")
  # Frame has finished loading
  if frame.complete
    #run my code
  else
    # Frame is still loading, run this code when it finishes
    frame.loaded.then () ->
      # run my code

否则,您可以编写一个 Stimulus 控制器来包装您的 datepicker 初始化,这样您就不必注意它进出 DOM。


推荐阅读