如何优雅的在嵌套组件中都使用v-model

本文探讨了在子组件和父组件都使用v-model的情况下,如何通过computed属性实现一种优雅的解决方案。示例展示了一个场景,父组件初始传入值到子组件,并能在1秒后修改该值,同时允许用户直接在input中输入,实现双向数据同步。
摘要由CSDN通过智能技术生成

说来惭愧,子组件使用了v-model,同时父组件也使用v-model,这个问题其实困扰了我很久。很久以前我就遇到过这个问题,而且发现这个不好实现。当时我采取的是回避的做法,毕竟也没有规定组件就一定要用v-model😂,但心里一直觉得自定义组件使用v-model更优雅,用起来更方便。
这次我希望找到一个实现的方案。

方案

我想使用computed来实现是一种比较优雅的方案
在这里插入图片描述
在这个例子中,一开始父组件往子组件传入值:‘父组件传入的初始值’,并在el-input中显示出来,1秒后父组件会修改变量值为:‘父组件修改myInput的值’,可以看到子组件的值和input中的值都得以更新,而我直接在input中输入值时,子组件和父组件的变量值也得到了更新,实现了值的双向传递。

<template>
  <div>
    <el-input v-model="input"
              placeholder="请输入内容"></el-input>
    <p>子组件中变量input的值是:{
  {input}}</p>
  </div>

</template>

<script>
export default {
  name: 'DemoComponent',
  model: {
    prop: 'value',
    event: 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
v-model和:model是Vue.js用于实现双向数据绑的指令。它们可以用于将表单元素的值与Vue实例的数据属性进行绑定,实现数据的自动同步更新。 v-model是Vue.js提供的语法糖,它可以同时实现数据的读取和更新。在表单元素上使用v-model指令时,它会根据元素的类型自动选择合适的方式进行数据绑定。例如,在一个input元素上使用v-model,它会自动监听input事件并将输入的值赋给绑定的数据属性,同时也会将数据属性的值赋给input元素的value属性,实现数据的双向绑定。 而:model是v-model的一种简写形式,用于在Vue.js使用动态属性名进行数据绑定。通过使用冒号(:)将属性名作为动态值传递给:model指令,可以实现动态地绑定不同的数据属性。例如,可以使用:model="propertyName"来动态地绑定不同的数据属性。 下面是v-model和:model嵌套使用的示例: ```html <template> <div> <input v-model="parentValue" :model="dynamicProperty"> <p>Parent Value: {{ parentValue }}</p> <p>Dynamic Property Value: {{ dynamicProperty }}</p> </div> </template> <script> export default { data() { return { parentValue: '', dynamicProperty: 'parentValue' } } } </script> ``` 在上述示例,我们使用v-model绑定了一个input元素,并将其值与父组件的parentValue属性进行双向绑定。同时,我们使用:model指令将动态属性名dynamicProperty绑定到input元素上,这样可以根据dynamicProperty的值动态地绑定不同的数据属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值