У меня есть v-for цикл в vuejs, который отображает компонент на каждой итерации. Это компонент автозаполнения, который ищет и отображает названия продуктов, когда пользователь вводит в поле ввода.Javascript vuejs component in for loop
У меня есть атрибут @change="setProduct"
для каждого компонента, который правильно вызывает мой метод setProduct
в моем родительском компоненте.
Но как я могу узнать, какой компонент был обновлен? Все, что передается методу setProduct, - это детали продукта, который был выпущен, но я не знаю, какой компонент выбрал событие, чтобы узнать, какая строка обновляется.
Вот некоторые соответствующий код: Это в родительском компоненте
<template>
<div class="row" v-for="line, i in invoice.InvoiceLines">
<div class="col-xs-5">
<auto-complete :list="productList" :value="line.Product.name" @change="setProduct"></auto-complete>
</div>
...
</div>
</template>
<script>
export default {
data() {
return {
invoice:{},
productList:[]
},
}
methods:{
setProduct(product){
//product has the details of the new product that was selected. But I don't know which invoice line it is referring to.
},
}
}
</script>
Компонент отвечает пользователь, нажав на выбор в раскрывающемся списке, а затем вопросы $ испускают («изменение», продукт);
Компонент не знает о материнском компоненте, поэтому он не знает, на какую строку счета он ссылается. Я мог бы передать индекс в дочерний компонент, а затем передать его обратно, но это похоже на анти-шаблон для vue.
Возможно, есть более простой способ для этого?
Благодарим за помощь.
Вы должны иметь возможность передавать идентификатор продукта или индекса в 'setProduct' или какой-либо другой способ идентифицировать. Можете ли вы добавить какой-то соответствующий код, чтобы дать нам больше идеи. – Saurabh