当前位置: 首页 > 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://www.dtcms.com/wzjs/311838.html

相关文章:

  • 如何做视频解析网站免费的外链网站
  • 电子商务网站功能需求百度查重入口免费版
  • 快站免费网站建设哪家好运营主要做什么工作
  • 网站开发需要经过的几个主要阶段营销模式方案
  • PHP网站建设项目经验排超最新积分榜
  • 宜昌城市建设学校网站百度关键字推广费用
  • 青海省建设厅网站seo优化大公司排名
  • 网站描述优化whois查询 站长工具
  • 在360怎么做网站做网页怎么做
  • 网站制作报价ihanshi网络视频营销策略有哪些
  • 诸暨公司做网站seo网络优化日常工作内容
  • 怎么免费做一个网站有没有免费的推广网站
  • 宝安建设与住宅局网站怎么做宣传推广
  • 导航网站前端模板下载百度竞价怎么做
  • 潍坊建设网站公司seo排名首页
  • 哪个平台做网站好制作网站的软件
  • 免费移动版wordpress2020 惠州seo服务
  • go语言做的网站河南百度推广电话
  • 遂宁市建设银行网站夜夜草
  • 商务信息网站怎么做竞价服务托管价格
  • 提高政府的门户网站建设2023年6月疫情恢复
  • 百度推广网页制作seo关键字排名
  • 网站ftp查询长沙网站推广排名优化
  • 四川时宇建设工程有限公司官方网站谷歌手机版浏览器官网
  • 目前网站开发的主流语言是什么seo快速排名软件
  • 南通做网站推广的公司网络营销有哪些特点
  • 网站制作公司南宁哪里有整站优化
  • wordpress 分类 模板关键词排名优化营销推广
  • 网站建设用语言长沙做网站推广
  • 上海工作网站hao123影视