最近我在使用Vue框架的時候遇到了一個CheckBox的問題,原來這是一個已知的Bug,我將在本篇文章中為大家介紹該問題,并提供解決方法。
這個問題出現在使用v-for指令遍歷Checkbox對象時,無法將選中的Checkbox的值正確地傳遞給Vue組件。在綁定Checkbox的Value值后,點擊選中Checkbox時,Vue Model并沒有響應對應的值。此問題在Vue的2.0版本之前是不存在的。
<div id="app"> <label v-for="(item, index) in items"> <input type="checkbox" v-model="checkedNames" :value="item"> {{ item }} </label> <pre>{{ checkedNames }}</pre> </div> <script> new Vue({ el: '#app', data: { items: ['A', 'B', 'C', 'D'], checkedNames: [] } }) </script>
解決該問題的方法是通過使用一個計算屬性來代替直接使用v-model綁定Checkbox。首先,在Vue實例中定義一個空的數組,用于保存選中的Checkbox的值:
<script> new Vue({ el: '#app', data: { items: ['A', 'B', 'C', 'D'], checkedNames: [] }, computed: { checkedValues: { get: function () { return this.checkedNames }, set: function (value) { this.checkedNames = value } } } }) </script>
然后,在HTML代碼中,我們將v-model改為同名的計算屬性,并將Checkbox的value值替換為item的索引值:
<div id="app"> <label v-for="(item, index) in items"> <input type="checkbox" :value="index" v-model="checkedValues"> {{ item }} </label> <pre>{{ checkedNames }}</pre> </div>
通過使用計算屬性,我們成功地繞過了該Bug,并且得以正常地將選中的Checkbox的值傳遞給Vue組件。
上一篇go json數據
下一篇vue checkall