P粉3434089292023-09-03 00:21:00
無法重複出現未定義和未處理的錯誤,您需要進一步偵錯。
但是您正在發出emit函數,這很奇怪,而且無論是否選中,值始終為filter.id
。
您可能想要做一些類似以下的動作:
new Vue({ el: '#app', components: { 'Checkbox': { template: '#checkbox-template', props: { label: { type: String, default: '' }, value: { type: Boolean, default: false }, id: { type: String, default: '' } } } }, data: () => ({ filters: [{ id: 1, name: 'a', selected: true, },{ id: 2, name: 'b', selected: false, }] }), methods: { mutuallyExclusive(value) { console.log(value) } } })
<div id="app"> <Checkbox v-for="filter of filters" :key="filter.id" :label="filter.name" :id="filter.id" v-model="filter.selected" @change="mutuallyExclusive" /> </div> <template id="checkbox-template"> <div class="filter"> <input :ref="id" :id="id" type="checkbox" class="filter-checkbox" :checked="value" @change="$emit('change', {value:$event.target.checked, id})" /> <span v-if="label">{{ label }}</span> </div> </template> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.14/vue.min.js"></script>