跳至内容

Streams

八个操作

追加

将模板标记中的内容追加到由目标 dom id 指定的容器中。

<turbo-stream action="append" target="dom_id">
<template>
Content to append to container designated with the dom_id.
</template>
</turbo-stream>

如果模板的第一个元素具有一个 id,而该 id 已被 dom_id 指定的目标容器内的直接子元素使用,则会替换该元素,而不是追加该元素。

前置

将模板标记中的内容前置到由目标 dom id 指定的容器中。

<turbo-stream action="prepend" target="dom_id">
<template>
Content to prepend to container designated with the dom_id.
</template>
</turbo-stream>

如果模板的第一个元素具有一个 id,而该 id 已被 dom_id 指定的目标容器内的直接子元素使用,则会替换该元素,而不是前置该元素。

替换

替换由目标 dom id 指定的元素。

<turbo-stream action="replace" target="dom_id">
<template>
Content to replace the element designated with the dom_id.
</template>
</turbo-stream>

更新

将模板标记中的内容更新到由目标 dom id 指定的容器中。

<turbo-stream action="update" target="dom_id">
<template>
Content to update to container designated with the dom_id.
</template>
</turbo-stream>

删除

删除由目标 dom id 指定的元素。

<turbo-stream action="remove" target="dom_id">
</turbo-stream>

之前

在由目标 dom id 指定的元素之前插入模板标记中的内容。

<turbo-stream action="before" target="dom_id">
<template>
Content to place before the element designated with the dom_id.
</template>
</turbo-stream>

之后

在由目标 dom id 指定的元素之后插入模板标记中的内容。

<turbo-stream action="after" target="dom_id">
<template>
Content to place after the element designated with the dom_id.
</template>
</turbo-stream>

变形

通过变形替换由目标 dom id 指定的元素。

<turbo-stream action="morph" target="dom_id">
<template>
Content to replace the element.
</template>
</turbo-stream>

可以将 children-only 属性添加到 turbo-stream 元素中,以仅变形由目标 dom id 指定的元素的子元素。

<turbo-stream action="morph" target="dom_id" children-only>
<template>
Content to replace the element.
</template>
</turbo-stream>

刷新

启动 页面刷新,以通过变形呈现新内容。

<!-- without `[request-id]` -->
<turbo-stream action="refresh"></turbo-stream>

<!-- debounced with `[request-id]` -->
<turbo-stream action="refresh" request-id="abcd-1234"></turbo-stream>

针对多个元素

要使用单个动作定位多个元素,请将 targets 属性与 CSS 查询选择器一起使用,而不是 target 属性。

<turbo-stream action="remove" targets=".elementsWithClass">
</turbo-stream>

<turbo-stream action="after" targets=".elementsWithClass">
<template>
Content to place after the elements designated with the css query.
</template>
</turbo-stream>

处理流元素

Turbo 可以连接到任何形式的流,以接收和处理流动作。流源必须分派 MessageEvent 消息,其中包含该事件的 data 属性中的流动作 HTML。然后通过 Turbo.session.connectStreamSource(source) 连接,并通过 Turbo.session.disconnectStreamSource(source) 断开连接。如果你需要处理来自不同源(而不是生成 MessageEvent 的源)的流动作,则可以使用 Turbo.renderStreamMessage(streamActionHTML) 来执行此操作。

将所有这些内容组合在一起的一个好方法是使用自定义元素,就像 turbo-rails 在 TurboCableStreamSourceElement 中所做的那样。

下一步:事件