console
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<div id="app">
<base-input v-model.number="age" />
</div>
<script>
Vue.component('base-input', {
props: {
value: Number
},
template: `
<label>
年龄:
<input v-bind:value="value" v-on="inputListeners" />
</label>
`,
computed: {
inputListeners() {
let vm = this
return Object.assign({},this.$listeners,
{
input(event) {
vm.$emit('input', event.target.value)
}
}
)
}
},
})
let vm = new Vue({
el: '#app',
data: {
age: 18,
},
watch: {
age(val) {
console.log(val)
}
}
})
</script>