题注
场景:首先,页面加载时父组件显示要处理的消息数;每次在子组件处理消息,父组件且是公共组件显示消息处理的剩余条数
分析:要把父组件的消息数传到子组件,当子组件点击确认或者取消按钮时,再把值传到父组件,通过父子组件互相传值,实现该功能
代码
父组件
html
<template> //徽标 <Badge :count="count"> <router-link to="/News"> <img class="demo-badge" src="static\pictureV1.0\Tobar\消息 (3).png" /> </router-link> </Badge> //子组件在父组件的位置 <div class="layout-content"> //子组件,监听agreeNegotiate方法,当子组件点击触发agreeNegotiate方法时,同时触发父组件的agreeNegotiate方法 <router-view v-model="count" @agreeNegotiate="agreeNegotiate"/> </div> </template>
js
<script> //在父组件引入子组件才能构成父子关系 import News from '@/View/news/News'; export default { data() { return { count: "", }; }, components: {News}, methods: { agreeNegotiate (childrenValue) { console.log(childrenValue); // 'abcde' this.count=childrenValue; }, } </script>
子组件
export default { //接收父组件传值 props: ['count'], } agreeNegotiate(){ //给父组件传值 this.$emit('agreeNegotiate',vm.nowCount); }
代码分析
父组件给子组件传值
使用v-model,将绑定的值传给子组件,然后子组件使用props属性接收,就可以直接显示
子组件给父组件传值
子组件给父组件传值,在父组件的子组件标签上加上@监听方法