Javascript 无法在Ruby on Rails应用程序中检索正确的目标值
我正在构建一个简单的购物车应用程序,并使用Stimulus JS处理Rails视图和Javascript逻辑之间的交互 在购物车页面中,我通过在UI中循环显示产品,如下所示:Javascript 无法在Ruby on Rails应用程序中检索正确的目标值,javascript,ruby-on-rails,stimulusjs,Javascript,Ruby On Rails,Stimulusjs,我正在构建一个简单的购物车应用程序,并使用Stimulus JS处理Rails视图和Javascript逻辑之间的交互 在购物车页面中,我通过在UI中循环显示产品,如下所示: <% @curr_cart.items.each do |item| %> <span id="test" data-target="cart.count"> <%= item.quantity %> &
<% @curr_cart.items.each do |item| %>
<span id="test" data-target="cart.count">
<%= item.quantity %>
</span>
我正在尝试添加“删除”功能,从购物车中删除项目。我的删除逻辑工作正常,但我无法更新正确项目的数量。每次删除产品时,只有第一个项目的数量会减少
这就是我更新的方式:
this.countTarget.innerHTML=Number(this.countTarget.innerHTML)-1代码>
尝试使用值和数据属性,但运气不佳:皱眉:
今天大部分时间都在想办法解决这个问题,但没能解决。关于如何解决这个问题有什么想法或建议吗
谢谢 根据您发布的代码和描述,我假设您正在为所有购物车项目使用一个刺激控制器实例。大概是这样的:
<div data-controller="cart-items">
<% @curr_cart.items.each do |item| %>
<span id="test" data-target="cart.count">
<%= item.quantity %>
</span>
...
other fields
...
<% end %>
</div>
...
其他领域
...
这种方法有一个问题,您必须找出您试图编辑的项目并更改正确的字段。据我所知,项目不应相互依赖。我建议您每行使用一个刺激控制器实例:
<% @curr_cart.items.each do |item| %>
<div data-controller="cart-item">
<span id="test" data-target="cart.count">
<%= item.quantity %>
</span>
...
other fields
...
</div>
<% end %>
...
其他领域
...
现在,JS控制器中的每一行都绑定到自身,您不必在countTargets
数组中搜索特定的行,每一行中只有一行countTarget
。这应该能解决你的问题。缺点是线路之间无法通信,但如果需要,您可以通过另一个刺激控制器来实现。谢谢!这就是我最后做的。但是,想知道拥有/创建多个控制器实例是否有任何问题(例如,如果这是针对大量项目进行的)?我认为不应该有任何问题,刺激是基于这种用法创建的,一个控制器可以在一个页面上多次使用,应该可以正常工作。