JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
<app-checkbox
v-for="category in categories"
name="categories[]"
:value="category.value"
v-model="checked">
{{ category.label }}
</app-checkbox>
<pre>{{ checked }}</pre>
</div>
JavaScript
Vue.component('app-checkbox', {
model: {
prop: 'checked',
event: 'change',
},
props: ['name', 'value', 'checked'],
template: `
<label>
<input
type="checkbox"
:name="name"
:value="value"
v-model="model"
>
<slot></slot>
</label>`,
computed: {
model: {
get() {
return this.checked;
},
set(val) {
this.$emit('change', val);
},
},
},
});
new Vue({
el: '#app',
data: {
categories: [
{ label: 'Категория 1', value: 1 },
{ label: 'Категория 2', value: 2 },
{ label: 'Категория 3', value: 3 },
],
checked: [2],
},
});