console
const sleepPs = (ms) => {
return new Promise(resolve => setTimeout(resolve()), ms)
}
var app = new Vue({
el: '#app',
data() {
return {
form: {
value: '',
}
}
},
methods: {
async fatchForm() {
await sleepPs(300)
const form = formTransform({})
form.$writeView({
value: 1355
})
console.log(form)
this.form = form
},
onSubmit() {
let form = this.form.$readView()
console.log(JSON.stringify(form, null, 2))
},
},
created() {
this.fatchForm()
}
});
const formTransform = (data) => {
Object.defineProperty(data, '$writeView', {
value: function(data) {
data.value = data.value / 100
Object.assign(this, data)
}
})
Object.defineProperty(data, '$readView', {
value: function() {
let data = {...this}
data.value = data.value * 100
return data
}
})
return data
}
<div id="app">
<input type="text" v-model="form.value">
<button @click="onSubmit">test</button>
</div>