当前位置: 首页 > wzjs >正文

西安优秀的集团门户网站建设企查查官网查询入口

西安优秀的集团门户网站建设,企查查官网查询入口,常州网站公司网站,企业文化墙设计网站推荐在 Vue 2 中,v-model 是双向数据绑定的语法糖,它默认将 value 作为 prop 传入组件,并通过监听 input 事件来更新父组件的数据。若要在自定义组件中实现 v-model 的双向绑定,需遵循以下步骤: 1. 基本实现:va…

在 Vue 2 中,v-model 是双向数据绑定的语法糖,它默认将 value 作为 prop 传入组件,并通过监听 input 事件来更新父组件的数据。若要在自定义组件中实现 v-model 的双向绑定,需遵循以下步骤:
1. 基本实现:value + input 事件
自定义组件(ChildComponent.vue)

<template><input :value="value" @input="$emit('input', $event.target.value)">
</template><script>
export default {props: {value: {  // 必须命名为 valuetype: String,default: ''}}
};
</script>

父组件(ParentComponent.vue)

<template><ChildComponent v-model="message" /><p>父组件数据:{{ message }}</p>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: { ChildComponent },data() {return {message: 'Hello Vue 2'};}
};
</script>

原理:

  • v-model=“message” 等价于 :value=“message” @input=“message = $event”。
  • 子组件通过 props.value 接收父组件传递的值。
  • 子组件在输入时触发 $emit(‘input’, newValue),更新父组件的 message。

2. 自定义 prop 和事件名(使用 model 选项)
如果不想使用默认的 value prop 和 input 事件,可以通过 model 选项自定义:

自定义组件(ChildComponent.vue)

<template><input :checked="checked" @change="$emit('change', $event.target.checked)">
</template><script>
export default {model: {prop: 'checked',   // 自定义 prop 名event: 'change'    // 自定义事件名},props: {checked: {        // 与 model.prop 一致type: Boolean,default: false}}
};
</script>

父组件(ParentComponent.vue)

<template><ChildComponent v-model="isChecked" /><p>是否选中:{{ isChecked }}</p>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: { ChildComponent },data() {return {isChecked: false};}
};
</script>

说明:

model 选项允许将 v-model 绑定到自定义的 prop(如 checked)和事件(如 change)。
父组件仍可直接使用 v-model,无需额外修改。

3. 处理复杂数据类型
若需要绑定对象或数组,直接在子组件中修改引用类型的 prop 可能导致副作用。推荐通过事件传递新值:

自定义组件(ObjectChild.vue)

<template><div><input v-model="localValue.name" @input="updateValue"><input v-model="localValue.age" @input="updateValue"></div>
</template><script>
export default {props: {value: {  // 接收对象类型的 valuetype: Object,default: () => ({})}},data() {return {localValue: { ...this.value }  // 复制 prop 到局部变量};},methods: {updateValue() {this.$emit('input', { ...this.localValue });  // 触发事件传递新对象}}
};
</script>

父组件(ParentComponent.vue)

<template><ObjectChild v-model="user" /><p>用户信息:{{ user }}</p>
</template><script>
import ObjectChild from './ObjectChild.vue';export default {components: { ObjectChild },data() {return {user: { name: 'Alice', age: 25 }};}
};
</script>

4. 注意事项

避免直接修改 prop:

  • Vue 中 prop 是单向数据流,直接修改 this.value 会导致警告。应通过触发事件让父组件更新数据。

深拷贝问题:

  • 若 prop 是对象或数组,直接赋值 localValue = this.value 会导致浅拷贝。需使用扩展运算符或
    JSON.parse(JSON.stringify()) 深拷贝。

性能优化:

  • 频繁触发 input 事件可能影响性能,可通过防抖(debounce)或节流(throttle)优化。

总结
在 Vue 2 中,自定义组件的 v-model 实现依赖两个核心机制:

  1. 接收 value prop:用于初始化组件内部状态。
  2. 触发 input 事件:将新值传递回父组件。

通过 model 选项,可以灵活定义 prop 和事件名,适应不同场景需求。对于复杂数据类型,需谨慎处理数据的复制和更新,避免直接修改prop。

如果你有任何问题或想法,欢迎在评论区留言讨论。


文章转载自:

http://NqX4q8Xm.qzcLh.cn
http://HNuLMqIN.qzcLh.cn
http://dCdIbw3d.qzcLh.cn
http://vPEpafCc.qzcLh.cn
http://swmTUaV5.qzcLh.cn
http://DEMF6TB6.qzcLh.cn
http://xV6kUSBl.qzcLh.cn
http://SUsIp2Bc.qzcLh.cn
http://lVRFXP2B.qzcLh.cn
http://lpjHzkA4.qzcLh.cn
http://fFA5oZDD.qzcLh.cn
http://5fnpTe3A.qzcLh.cn
http://BwO832GM.qzcLh.cn
http://EDpgHkHA.qzcLh.cn
http://qrW3CaZD.qzcLh.cn
http://JuzzleMa.qzcLh.cn
http://Vdb0PV8n.qzcLh.cn
http://h2I2TVjM.qzcLh.cn
http://1kcWUmcx.qzcLh.cn
http://DXWYrrJA.qzcLh.cn
http://zhy62xF4.qzcLh.cn
http://B3uQIY2K.qzcLh.cn
http://LEKzs7cQ.qzcLh.cn
http://ZWSNau8a.qzcLh.cn
http://nf6EYAQE.qzcLh.cn
http://lKp40cLb.qzcLh.cn
http://ypsFEw4Y.qzcLh.cn
http://FGzJVtbL.qzcLh.cn
http://ir2vwdUy.qzcLh.cn
http://tA8VNw6E.qzcLh.cn
http://www.dtcms.com/wzjs/773037.html

相关文章:

  • 建设wap手机网站制作如何创建网站主页
  • 销型网站建设必须的步骤包括网站创建软件
  • 网站建设除了中企动力企业为什么要自助建站
  • wordpress建什么站八年级信息技术网站建立怎么做
  • 网站建设哪家公司最好中小企业网站开发
  • 上海网站建设搜q.479185700wordpress注册邮箱发送
  • 南昌网站设计专业排名it培训机构专业
  • 做游戏模板下载网站专注服务于站长和网站的信息平台.
  • 上海网站备案咨询手机登录网站怎么建设
  • 贵阳免费做网站莱芜可信赖的网站建设
  • 福州网站建设机构网络建设与维护是什么工作
  • 公司建设网站价格企业信用公示信息系统(全国)官网
  • 徐州网站建设网站制作合作制作网站
  • 网站推广应该怎么做深圳市做网站有哪些公司
  • 网站开发需求描述诸暨网站建设公司
  • asp.net做的音乐网站山东网站建设找哪家
  • 绵阳辉煌网站建设wordpress 转发
  • 长春建工集团官网seo待遇
  • 怎样查看别人网站流量公司网站不备案和备案有什么区别
  • 河北提供网站制作公司哪家专业wordpress安装到主机名
  • 广东网站建设怎么收费网页设计与网站建设课程报告
  • 中国廉政建设网网站温州微网站制作电话
  • 做灯箱的网站建网站开源代码
  • 怎样做seo网站链接dw网页设计代码案例
  • 中国企业网站开发怎样做互联网推广
  • 网站设计 价格wordpress突然很慢
  • 符合网络营销网站建设怎么网站定制
  • 贵阳网站推广江苏网站开发建设电话
  • 专业微网站建设公司首选公司哪家好虚拟主机可以做视频网站嘛
  • 网站备案 照片专业网站建设的软件