在页面的其他地方重复使用刺激措施?

Re-using a stimulus action elsewhere on the page?

我正在连接一个松弛的克隆 (html/css) 并拥有它,以便在我单击 x 时引用抽屉 opens/closes。我也想从导航区域 open/close 它并认为我可以使用相同的 link_to 并从页面的不同部分调用它。

但是当我这样做时,如果我从不同的目标中调用它,我会得到一个错误

Error invoking action "click->navigation#toggle_reference_drawer"
Error: Missing target element "navigation.referenceDrawer"

如何使用数据目标内的代码来触发不同的数据目标?

即我想要开始工作的是

--导航部分(link_to不起作用)--

<div data-navigation-target="storyNavLinks">
   <div class ="story">
     <%= link_to "[x]", "#", data: { action: "click->navigation#hide_reference_drawer" } %>
   </div>
</div>

-- 部分应用(link_to 有效)--

  <div data-navigation-target="referenceDrawer">
     <div class='reference box'>
        <%= link_to "[x]", "#", data: { action: "click->navigation#hide_reference_drawer" } %>
     </div>
  </div>
 

不确定我哪里出错了。我想只要被引用的目标是唯一的并且在页面上它从哪里调用应该无关紧要?

您必须确保您的 data-controller 属性位于包含两个目标的元素上。如果那不可能,您始终可以包含控制器两次,但目标的范围仅限于每个实例,因此您也需要添加它们两次。