4

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

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

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

这个想法是刺激控制器中的 content#edit 动作检查并定位它的 id 并使用它来编辑正确的行。

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

但是,如果我想通过例如将 id 附加到每个数据目标来使每个数据目标不同,那么现在我在 controller.js 中有一个很长的目标列表,所以这没有任何意义。

唷,我希望你跟着那个。正确的处理方法是什么?

4

2 回答 2

3

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

如果您将 Stimulus 用于表单上的任何内容,我将利用这个机会制作一个 Stimulus 控制器,该控制器侦听ajax->send/error/complete事件并自动禁用/启用按钮,在按钮上设置加载微调器,并关闭模式。这些将是一些很好的区域,可以添加一些 Stimulus 非常简单的功能。

于 2018-07-16T16:54:37.850 回答
2

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

<tr data-controller="content">
  <td>
    <a data-action="click->content#edit" data-target="content.editBtn" id="<%= url_for(content) %>")>
      Edit
    </a>
  </td>
</tr>
于 2021-03-04T02:41:20.627 回答