在turbo访问后不会触发turbo:load事件(正如文档所说的那样)。在初始整页加载后,它会按预期工作。我可以捕获“turbo:before-fetch-response”事件,但我对turbo:load、:render、:frame-render、:frame-load 没有运气。
我的 Turbo_stream 请求格式为 TURBO_STREAM 以销毁附件。控制器响应为
respond_to do |format|
format.turbo_stream do
render 'attachments/delete_document',
locals: { target: "docs-list-#{img.id}" }
end
end
Run Code Online (Sandbox Code Playgroud)
我返回两个涡轮流,其更新和删除操作按预期工作:
<turbo-stream action="remove" target="<%= target %>">
<template></template>
</turbo-stream>
<turbo-stream action="update" target="flash_messages">
<template>
<%= render partial: 'layouts/flash', formats: :html,
locals: { type: :notice,
message: 'Attachment removed.' } %>
</template>
</turbo-stream>
Run Code Online (Sandbox Code Playgroud)
(注意:这是另一篇文章的一个亮点。那里提出的解决方案在我的情况下不起作用,因为完整属性仅存在于HTML img 元素。)(我正在使用@hotwired/turbo@^7.1.0,@ Rails 7.0.1 中的 hotwired/turbo-rails@^7.1.1)
在 Rails 7 应用程序中,单击图标可切换表单的显示属性。两个 HTML 元素都正确连接到各自的控制器(切换器和切换器)。表单(togglee)是图标(toggler)的出口。问题:切换器控制器无法识别切换器插座。五个插座属性(例如 this.toggleeOutlets)仍然未定义。
HTML:
<i class="toggle-display fa fa-chevron-down" data-controller="toggler" data-toggler-togglee-outlet="#filter-form" data-action="click->toggler#handleClick" title="Asset Filter"></i>
及以下
<div id="filter-form" style="display:none" data-controller="togglee">
...
/div>
Run Code Online (Sandbox Code Playgroud)
控制器:
\\ toggler_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static outlets = [ "togglee" ]
connect() {
console.log("Toggler controller connected")
}
handleClick(event) {
console.log("toggler controller: handleClick")
event.preventDefault();
console.log("outlet controllers:", this.toggleeOutlets)
...
}
}
Run Code Online (Sandbox Code Playgroud)
\\ togglee_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
console.log("Togglee …Run Code Online (Sandbox Code Playgroud)