Vue中 v-model 和 :model 的区别
Vue中 v-model 和 :model 的区别
1、v-model
-
通常用于表单上双向数据的绑定,如果除了表单其他组件使用时,起不到任何效果。
-
它还可以实现子组件到父组件的双向数据动态绑定。
input上的v-model:
<input v-model="price"><!-- 下行注释的语法糖 --> <!-- <input :value="price" @input="price = $event.target.value"> --> // $event.target.value 就是把input的值赋值给 price
组件上的v-model:
父组件Home:
<template><HomeChild v-model="vModelData"></HomeChild> </template> <script> import HomeChild from './child/HomeChild.vue' export default { name: 'Home', components: { HomeChild }, data () { return { vModelData: 'hello v-model' } } } </script>
子组件HomeChild:
<template> <div class="box"> <span>{{ value }}</span> <button @click="testVModel">测试v-model</button> </div> </template> <script> export default { name: 'HomeChild', props: { value: { type: String, default: '' }}, methods: { testVModel () { this.$emit('input', '我是子组件'); <!--子组件触发input事件来改变value的值--> } } } </script>
2、:model
:model是v-bind:model的缩写。
只是将父组件的值传递给和子组件,但是并未实现子组件和父组件之间的双向数据绑定。
如:
<child :model="msg"></child> <!--只是将父组件的数据传递到子组件-->
引用类型除外,子组件改变了引用类型的数据的话,父组件的数据也会跟着改变。
引用类型有这几种:Object、Array、RegExp、Date、Function;特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通