刺激因素:如何处理目标名称相同的重复项

时间:2018-07-13 11:41:46

标签: javascript stimulusjs

我有一个项目列表,每个项目都有一个链接以单击以进行编辑。当他们单击该编辑链接时,我正在使用激励来使编辑“模式”表单可见。要编辑的内容的ID在列表的相应链接标签上以id =的形式出现

因此,编辑链接如下所示:

<td><a data-action="click->content#edit" data-target="content.editBtn" id="<%= url_for(content) %>")>Edit</a></td>

想法是,刺激控制器中的content#edit动作将检查并找到其ID,然后使用该ID来编辑右行。

但是,我认为我遇到的问题是,此列表的所有行都有一个具有相同名称的数据目标,并且错误的一个(第一个)被绑定到该目标。

但是,如果我想使每个数据目标都不同,例如将id附加到它之后,现在我在controller.js中有一长串目标,因此没有任何意义。

Phew,希望您也照做。什么是正确的处理方式?

2 个答案:

答案 0 :(得分:2)

如果像其他问题似乎表明的那样,将Rails用作后端,则可能有一个更简单的非刺激性解决方案。要使用Stimulus,您需要从服务器或DOM中获取商品的数据,以表格形式显示,然后通过JavaScript向服务器提交具有正确ID的正确表格。为什么不为每个项目的link_to操作提供一个远程edit按钮呢? Rails收到对edit控制器操作的JS请求,您可以使用来自Ruby对象的数据加载模式表单。

如果您对表单上的任何内容使用Stimulus,我将借此机会设计一个Stimulus控制器,该控制器监听ajax->send/error/complete事件并自动禁用/启用按钮,在按钮上设置加载微调器并关闭模态这些将是可以刺激Stimulus使其非常简单的某些功能的好地方。

答案 1 :(得分:1)

这实际上是 Stimulus 的一个很好的用途,因为它是模块化的。您为每一行添加一个控制器,而不是在页面或表格周围放置控制器。

<tr data-controller="content">
  <td>
    <a data-action="click->content#edit" data-target="content.editBtn" id="<%= url_for(content) %>")>
      Edit
    </a>
  </td>
</tr>