在uniapp中,也许有人会纠结为什么会有@input还有v-model
1.它们有什么区别?
v-model:数据双向绑定->输入时绑定视图层,而@input则只是监听值
@input:监听输入的值,可以通过监听值再渲染到视图层
2. v-model用在自定义组件上
v-model的缺陷是只能在自定义组件上用一次,而这时的双向绑定就要交由.sync语法糖来解决了
<template> <!-- 父组件index.vue --> <view class="content"> <onB v-model="hello" @valEvent="getValue"></onB> <input type="text" value="" v-model="hello" @input="hellos"/> {{hello}} </view> </template> <script> import onB from '@/components/onB.vue'; export default { data() { return { hello: '' } }, components:{ onB }, onLoad() {}, mounted() {}, methods: { hellos(e){ console.log(e.detail.value); }, getValue(e){ console.log('getValue:',e); } } } </script> <style> </style>
<template> <view @click="getValue"> <!-- onB.vue子组件 --> 子组件:{{val}} </view> </template> <script> export default { data() { return {} }, props: { val: String, default: '' }, model: { prop: 'val', event: 'valEvent' }, methods: { getValue(){ this.$emit('valEvent',this.val); } }, mounted() {} } </script> <style> </style>