vue子传父的一种新方法:this.$emit(‘input‘, value)可实现实时向父组件传值

今天要说的就是利用v-model和this.$emit('input',value)实现子传父。

众所周知,v-model是给input绑定,方便对表单的双向绑定。

其实,v-model是个语法糖,具体案例如下所示。

javascript 复制代码
<input v-model="inputValue">

相当于
<input v-bind:value="inputValue" v-on:input="inputValue = $event.target.value">

在自定义组件中
<my-component v-model="inputValue"></my-component>

相当于
<my-component v-bind:value="inputValue" v-on:input="inputValue = argument[0]">
</my-component>

这个时候,inputValue接受的值就是input事件的回调函数的第一个参数,
所以在自定义组件中,要实现数据绑定,还需要$emit去触发input的事件。
this.$emit('input', value)//这个是在子组件中调用的
其实通过this.$emit('input', value)已经实现了子传父

我们今天所说的是自定义组件实时子传父,请继续看下面代码:

javascript 复制代码
在父组件中调用子组件
<my-component v-model="inputValue"></my-component>

子组件
watch: {
  // sonVal是子组件的一个变量值,当他变化的时候就会触发handler将新值传给父组件的inputValue
  sonVal: {
    handler (newVal, oldVal) {
      this.$emit('input', newVal)
    },
    deep: true,
  }
}
相关推荐
掘金安东尼2 分钟前
向大家介绍《开发者博主联盟》🚀
前端·程序员·github
火车叼位5 分钟前
div滚动条是否存在?用 v-scroll-detect 增加一个辅助class
前端
H_z_q240112 分钟前
web前端(HTML)银行汇款单的制作
前端·html
小宇的天下15 分钟前
Synopsys Technology File and Routing Rules Reference Manual (1)
java·服务器·前端
@PHARAOH17 分钟前
WHAT - Vercel react-best-practices 系列(四)
前端·react.js·前端框架
@PHARAOH19 分钟前
WHAT - Vercel react-best-practices 系列(三)
javascript·react.js·ecmascript
duangww22 分钟前
JavaScript调用ABAP后端发布的restful服务
javascript·sap fiori
今天也要晒太阳47325 分钟前
对el-upload的上传文件显示名做长度限制
前端
答案—answer26 分钟前
开源项目:Three.js3D模型可视化编辑系统
javascript·3d·开源·开源项目·three.js·three.js编辑器
Thomas游戏开发27 分钟前
分享一个好玩的:一次提示词让AI同时开发双引擎框架
前端·javascript·后端