v-forを使ってitemsの中身をtableに表示させ、table内にあるinputに入力された値が初期値と比べて更新されていた場合に更新ボタンが押せる様にしたいと考えています。
itemsの中身が少ない時は
this.preprice != this.items[0].price | this.preprice != this.items[1].price
の様にひとつひとつ比較をしていくことができますが、数が増えた場合にはこのやり方では良くないと考えています。
何番目のinputが更新されたかを監視できればと思うのですが、やり方がわからずにいます。
どなたか良い方法がお分かりになる方がいらっしゃいましたら、ご教授いただけると幸いです。
コードの全文は以下の通りです。
vue
1<template> 2 <div class="container"> 3 <table class="table table-border"> 4 <thead> 5 <tr> 6 <th>名前</th> 7 <th>値段</th> 8 </tr> 9 </thead> 10 <tbody> 11 <tr v-for="(item, index) in items" :key="index"> 12 <td>{{ item.name }}</td> 13 <td> 14 <input type="text" class="form-control form-control-sm" v-model="item.price"> 15 </td> 16 </tr> 17 </tbody> 18 </table> 19 <button class="btn btn-primary" :disabled = !updatePrive>更新</button> 20 </div> 21</template> 22 23<script> 24export default { 25 data() { 26 return { 27 items: [{ 28 name: "肉", 29 price: 0 30 }, 31 { 32 name: "野菜", 33 price: 0 34 }], 35 // 初期値 36 preprice: 0 37 } 38 }, 39 computed: { 40 updatePrive() { 41 if (this.preprice != this.items[0].price | this.preprice != this.items[1].price) { 42 return true 43 } 44 return false 45 } 46 } 47} 48</script>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/10 16:16
2021/02/10 16:52