比如我这里遇到的是 tailwind 的 data-dismiss-target 无法生效。单纯是因为被 Turbo Stream 渲染,没有绑定上 dismiss 事件。
自己写 JS 重新绑定一下可以解决,有什么好一点的办法吗?
例如加个什么标签,类似以前
:turbolink => false
这种,让 turbo_frame 替换的时候,自动跳过这种标记的元素
tailwind 有 data-dismiss-target?用了其他插件吧?
跳到结论:Stimulus 就是解决这问题的。
说错了,是 flowbite。因为刚开始接触 tailwind 就配合着 flowbite 用的,脑子里就把他们给画等号了。
看了一下文档,只给了 plain js 的实例,意思就是让开发者根据自己用的框架包装。
用 Stimulus 写一个包装是这样:
// dismiss_controller.js import { Controller } from "@hotwired/stimulus" import { Dissmis } from "flowbite" export default class extends Controller { connect() { const targetEl = document.querySelector(this.element.getAttribute('data-dismiss-target')) new Dismiss(targetEl, { triggerEl: this.element }) } }
用的时候加上 data-controller
data-controller
<button type="button" class="..." data-dismiss-target="#alert-1" data-controller="dismiss"> ... </button>