dauren101
@dauren101
Python, Django ,Vue.js

Как при введении значения в инпут, подставить новое значение в соседний?

<td><input type="text" class="form-control"  v-model="result[product.id]" /></td>
 <td>{{product.unit}}</td>
 <td><input type="text" class="form-control"  v-model="price[product.id]" v-on:keyup="priceChange" :product_id="product.id"  /></td>
 <td><input type="text" class="form-control" v-model="sum[product.id]"  /></td>


methods: {
     priceChange: function(){
      let product_id=event.target.getAttribute('product_id');
      let price=this.price[product_id];
      let count=this.result[product_id];
      let sumres=price*count;
      console.log(sumres);
      this.sum[product_id]=sumres;
    }
  },

В консоли отображается сразу, при сабмите формы тоже вижу, но в интерфейсе только после 2 нажатия на клаву.
Как сделать с 1 раза, чтобы значение в sum подставлялось из калькуляции?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Убрать обработку события keyup и привязку атрибута product_id; метод priceChange вырезать.

Заменить v-model="sum[product.id]" на :value="sum[product.id]" readonly.

Свойство sum сделать вычисляемым:

sum() {
  return Object.fromEntries(Object.entries(this.price).map(n => ([
    n[0],
    (this.result[n[0]] || 0) * n[1],
  ])));
},
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы