<div id="app">
  <my-checkbox></my-checkbox>
</div>

<template id="my-checkbox">
  <div>
    <input type="checkbox" value="foo" v-model="checkedVals" /> foo
    <input type="checkbox" value="boo" v-model="checkedVals" /> boo
    <input type="checkbox" value="bar" v-model="checkedVals"> bar
    <p>{{ checkedVals }}</p>
  </div>
</template>
body {
  background-color: #777;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAQAAABuBnYAAAAAU0lEQVQIHQXBwRGDIBAAwO2/AMcCDHAcPjIRxjJ8Je1kl1uqUgphsWu6w0sIG6npLpcUBql4e/wsVRKabrkNTacIYbMrwsF06rqUhsnXVKVT+Hj+Ue4rPSONk4kAAAAASUVORK5CYII=);
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  color: #fff;
}

input, label, span {
  display: inline-block;
  vertical-align: middle;
  margin: 0 5px;
}
View Compiled
let app = new Vue({
  el: '#app',
  components: {
    'myCheckbox': {
      template:'#my-checkbox',
      data () {
        return {
          checkedVals: ['bar']
        }
      }
    }
  }
})
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js