您绝对不需要编写“页面”控制器。这个想法是你为交互元素编写更小的控制器。如果您发布更多关于您的用例的信息,也许我们可以帮助您拆分控制器。尽管控制器的元素必须包含注册为目标的任何元素,但您是正确的。请记住,您可以使用常规 Javascript 访问该上下文之外的元素(例如,在页面的完全不同部分)(换句话说document.getElementById
,您可以像使用 Stimulus 目标一样轻松访问)
不过,要回答您的问题,您可以执行以下操作:
show() {
fetch("/path/to/partial")
.then((res) => res.text())
.then((html) => {
const fragment = document
.createRange()
.createContextualFragment(html);
this.element.appendChild(fragment);
// OR document.getElementById("testy_element").appendChild(fragment)
});
}
它的作用是从 Rails 服务器获取 HTML 响应并将其插入到主控制器的元素 ( this.element
) 中。例如:
<div class="container" data-controller="test">
<button data-action="test#show">Do the Thing</button>
<!-- partial would appear here -->
</div>