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">
<div v-for="(v, k) in values">
<button @click="load(k)">load</button>
<input v-model="values[k]" @input="onInput(k)">
<button :disabled="!changed[k]" @click="save(k)">save</button>
</div>
</div>
JavaScript
new Vue({
el: '#app',
data: {
values: {
name1: '',
name2: '',
name3: '',
},
changed: {
name1: false,
name2: false,
name3: false,
},
},
mounted() {
Object.keys(this.values).forEach(this.load);
},
methods: {
load(key) {
setTimeout(() => {
this.values[key] = Math.random() * 10000 | 0;
this.changed[key] = false;
}, 400);
},
save(key) {
this.changed[key] = false;
},
onInput(key) {
this.changed[key] = true;
},
},
});