JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.js"></script>

<div id="app">
  <button @click="load">load</button>
  <input v-model="name">
  <button :disabled="!name_changed" @click="name_changed = false">save</button>
</div>

JavaScript

new Vue({
  el: '#app',
  data: {
    name: '',
    name_changed: false,
  },
  mounted() {
    this.load();
  },
  methods: {
    load() {
      if (this.unwatch) {
        this.unwatch();
        this.unwatch = null;
      }

      setTimeout(() => {
        this.name = Math.random() * 10000 | 0;
        this.name_changed = false;
        this.unwatch = this.$watch('name', () => this.name_changed = true);
      }, 500);
    },
  },
});