Скрипт Stimulus JS для вычисления общего

#html #ruby-on-rails #stimulusjs

#HTML #ruby-on-rails #stimulusjs

Вопрос:

Итак, здесь, в черном квадрате, я получаю сумму «Precio» (цена) * «Orden» (количество), а затем я хочу получить сумму всего в черном квадрате, где находится красный квадрат, который является «Итогом»

  • Это мой текущий скрипт:
       <script>
    (() => {
      const application = Stimulus.Application.start()
    
      const calculationController = class extends Stimulus.Controller {
        static targets = [ "precio", "cantidad", "output" ]
    
        calculate() {
          this.outputTarget.textContent = this.precioTarget.innerHTML * this.cantidadTarget.value
        }  
      }
    
      application.register("calculation", calculationController)
    })()
     

    (() => {
    const application = Стимул.Application.start()

       const totalController = class extends Stimulus.Controller {
        static targets = [ "valor", "total" ]
    
        total() {
          this.totalTarget.textContent = this.valorTarget.value  = this.totalTarget.value
        }
      }
    
      application.register("total", totalController)
    })()
     
  • И это то, что у меня есть в моем _form.html.erb, как раз та часть, где я использую что-либо стимулирующее
       <% @client.catalog.products.each do |product| %>
      <tr data-controller="calculation">
        <td><%= product.nombre %></td>
        <td data-target="calculation.precio"><%= product.precio %></td>
        <td><input data-action="change->calculation#calculate" data-target="calculation.cantidad" type="number" class="orden-field"></td>
        <td><span data-action="change->total#total" data-target="total.valor calculation.output">
        </span></td>
      </tr>
      <% end %>
    
      <tr>
        <td></td>
        <td></td>
        <td>IVA:</td>
        <td><span data-target="calculation.output"></span></td>
      </tr>
    
      <tr>
        <td></td>
        <td></td>
        <td><%= form.label :total, "Total:", class: "orden-field" %></td>
        <td><!--<%= form.text_field :total, class: "orden-field" 
        %>--><span data-target="total.total"></span></td>
      </tr>
    </tbody>
     
  • Любые предложения о том, как я могу успешно получить общую сумму из 3 элементов?

Комментарии:

1. Почему бы просто не написать метод, который вы можете вызвать, чтобы вернуть сумму?

2. это потому, что последний столбец «Valor» не является столбцом в таблице, разве он не должен быть столбцом, чтобы я мог выполнить метод? если нет, то как бы я это точно сделал? Я не слишком знаком с методами.

3. Я имею в виду, что вы могли бы просто захватить все значения с помощью javascript, а затем добавить их и поместить в это поле. Существует множество различных способов, которыми вы могли бы достичь этого, что вы пробовали до сих пор?

4. единственный стимул я занимался этим некоторое время, возможно, я что-то упускаю, поэтому я пришел сюда, чтобы придумать более простой способ сделать это: (