vue2[初级]消息订阅与发布组件

本节内容

vue中的消息订阅与发布组件 pubsub

– 回顾下父子两个组件之间的交互方式

  • 方式1 数据直接传递
    – 父组件定义data方法中定义数据 将数据名称绑定到标签中
    – 子组件通过props接收 然后通过for循环遍历数据或直接取值操作

方式1 代码思路

父组件
// 标签中绑定属性
<Menu222 :menus="menus" :webSide="webSide" />
// 定义数据
data(){
   return {
     webSide:{// logo图片连接
       url:'http://www/sun.com/',
       title:'Java官方网站'
     },
     menus:[
       {id:1,name:'科技2'},
       {id:2,name:'体育2'},
       {id:3,name:'财经2'},
       {id:4,name:'医疗2'},
       {id:5,name:'政治2'},
       {id:6,name:'教育2'}
     ]
   }
 }

子组件
// 直接取值或通过遍历取值
<a :href="webSide.url" :title="webSide.title" target="_blank">
 <img src="../assets/logo.jpg" alt="SUN JAVA" >
 </a>
 <ul>
   <!-- 这里必须要加上key 以免后期出现数据混乱 -->
   <li v-for="(menu,index) in menus" :key="menu.id">
     <a :href="'http://localhost/ment/'+menu.id">{
  {menu.name}}</a>
   </li>
 </ul>

// 接收父组件的属性
props:['menus','webSide']
  • 方式2 调用父组件中的方法
    – 首先父组件中定义方法并绑定到标签中
    – 然后子组件通过props接收
    – 子组件接收到父组件的方法后 在methods中通过this.父组件中的方法名来调用父组件中的方法

方式2 代码思路

// 父组件
// 绑定方法到标签中 addMenus
<Menu222 :menus="menus" :webSide="webSide" :addMenus="addMenus"/>

// 定义方法
 methods:{
    addMenus(menu){// 接收子组件调用时传递过来的值
      this.menus.push(menu);// 在menus数组的最后位置添加元素
    }
  }
  
// 子组件
// 页面传值操作
// input中双向绑定数据content
<input type="text" v-model="content" key="Math.random()"><br>
<button @click="add">添加</button>
// 接收父组件传递的属性
props:['menus','webSide','addMenus'],
  data(){ // 接收当前页面输入的值
    return {
      co
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值