<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <div id="app">
      <my-form></my-form>
    </div>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.1/vue.js"></script>
    <script src="https://rawgit.com/logaretm/vee-validate/2.0.0-beta.25/dist/vee-validate.js"></script>
    
    <script src="my-form.js"></script>
    <script src="app.js"></script>
  </body>

</html>
Vue.component('my-form', {
  data() {
    return {
      message: 'test'
    }
  },
  methods: {
    reset() {
      this.message = '';
      this.$nextTick(() => {
        this.fields.reset();
        this.errors.clear();
      });
    }
  },
  template: `
    <div>
      <input
        type="text"
        v-model="message"
        v-validate="'required'"
        name="message"
        :class="{ 'has-errors': errors.has('message') }" />
      <br />
      <button
        type="button"
        @click="reset">Cancel</button>
    </div>
  `
});
body {
  width: 300px;
  margin: 50px auto;
  padding: 2em;
  box-shadow: 0 0 100px #CCC;
}

input,
button {
  font-size: 1.5em;
}

.has-errors {
  border: 1px solid red;
  outline: 1px solid red;
}
Vue.use(VeeValidate, {
  enableAutoClasses: true
});


new Vue({
  el: '#app'
});