vue父组件接收不到子组件数据,求解答!!!
最近在自学vue,照着网上例子写了一个父子组件的双向绑定,只实现了单向绑定。父组件的数据不能随子组件变化,只能是子组件数据随父组件变化;在官网看了文档一时还是无法理解其思路。
请各位前辈帮忙看看是哪里出的问题,谢谢
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>双向绑定</title>
<script src="https://cdn.jsdelivr.net/npm/vue "></script>
</head>
<body>
<div id="app">
<div>
<span>父:{{value}}</span>
<input type="text" v-model='value' v-on:click="c_lick">
</div>
<my-com v-model="value"></my-com>
</div>
<template id="template1">
<div>
<span>子:{{childvalue}}</span>
<input type="text" v-model='childvalue' v-on:click="f_click">
</div>
</template>
<script>
new Vue({
el: '#app',
data: {
value: ''
},
methods: {
c_lick() {
//this.value--;
}
},
components: {
'my-com': {
template: '#template1',
props: ['value'],
data: function () {
return {
childvalue: this.value
}
},
methods: {
f_click() {
//this.currentvalue++;
this.$emit('input', this.childvalue);
}
},
watch: {
value(val) {
this.childvalue = val;
}
}
}
}
})
</script>
</body>
</html>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
稍微改了下,代码如下。
这问题的确简单,不过慢慢来就好。
如果想子组件到父组件通信,最常用的也是之前你代码有的是:this.$emit('input', v) 。
不过,子组件发出了通知,父组件也需要接收,你少了接收。
@input="getDataFromChild" 这样接收。
可以再看看 VUE 的组件通信内容。
vue双向绑定,首先来说要搞懂单向传递的原理,逐渐深入。父传子用props,子传父用$emit。
父传子还好说,在父级里把要传入的值,在子组件上动态绑定(v-bind)一个属性,把值传进去,然后子级用props来接受这个属性。
子传父的话有点复杂,首先来说子级在一个方法methods里,用this.$emit('属性名',传的值)来传给父级,而父级需要用一个v-on来接收这个值。
下述为双向传递,我自己写了一篇笔记,分享给你,对你学习vue很有帮助,好好研读
没啥问题啊,你本来写的就是点击子组件的input才向父组件同步值。