一般用来收集用户的输入的数据
使用场景:表单元素上面用来收集用户的数据
<input v-model='name'> //name为data中定义的一个变量
非表单元素(组件,第三方组件(如vant),自定义的组件) 父子组件数据双向绑定
父组件中修改数据,会影响子组件
子组件中修改数据,会影响父组件
v-model能做的事,我们通过props和$emit来完成(是一个语法糖)
上下2句代码是等价的 v-model(上面的代码就相当于下面代码的简写形式)
也就是表示 v-model=‘值’ 就相当于 :value=’值’ ,
所以 如果父组件用v-modle传了一个值的话,子组件必须用props接收
同时必须接收的叫value,(因为是固定的)
同时v-model 就相当于传递了一个:value=‘值’,监听了一个input(固定的)
可以理解为 v-model就是 简写形式(:value和input)
父组件用v-model传值 ()子组件就用props接收这个值,在子组件中就是接收(value)值(固定的)
子组件修改父组件后面v-model的值就用$emit(‘input’,’想修改成的值’)(固定的)
用v-model 子组件修改父组件v-model中传过来的值
v-model 用的少 只不过它的原理是这样(因为v-model传值的时候只能传一个值并且父组件给子组件只能用一个v-model)
说是固定的input和value其实也能改,在子组件中 通过model 中的event 就可以修改 父组件监听子组件的事件的名字 不叫input 下面举例叫 input 123 ,这个父组件不用动, 就相当于v-model 本来监听input
现在监听input123 prop 表示 :value ,变成了 :value1 同时父组件啥也不用动 还是v-modle=‘值’
相当于 监听子组件的input123事件 传递的值 是:value1:“值” 不过能改 但是没必要
就表示v-model监听的是input事件和 :value
也就是说在父组件中的子组件身上用了v-model 传值,子组件可以用props接收