私は各繰り返しでコンポーネントを表示するvuejsにv-forループを持っています。これは、ユーザーが入力ボックスに入力すると製品名を検索して表示するオートコンプリートコンポーネントです。forループのJavascript vuejsコンポーネント
親コンポーネントのsetProduct
メソッドを正しく呼び出す各コンポーネントに@change="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'や他の方法で製品やインデックスのIDを渡すことができるはずです。より多くのアイデアを与えるために関連するコードを追加してください。 – Saurabh