学习前端_vue组件_非父子级的组件间的数据传递

之前说过了父子级之间是如何传递数据的,接下来讲一下非父子级如何传递数据

1.创建一个空的vue实例 例如:var datavue=new Vue();

2.在数据源组件上添加发射方法,将想要传送的数据发射出去 例如: send(){datavue.$emit("edata",this.name) }

3.在接收数据的组件接收方法,在合适的时间监听传送过来的数据  例如 datavue.$on('edata',name=>{this.name=name;})


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>非父子之间的数据通信</title>
  <script src="js/vue.js"></script>
</head>
<body>
    <div id="test">
        <vue_a></vue_a>
        <vue_b></vue_b>
    </div>
    <template id="vue_a">
      <div>
        <p>这是A组件</p>
        <p>A组件名字是:{{name}}</p>
        <input type="button" value="发送数据" @click='send'>
      </div>
    </template>
    <template id="vue_b">
      <div>
        <p>这是B组件</p>
        <p>B组件接收的数据是{{name}}</p>
      </div>
    </template>
    <script>
      var datavue=new Vue();    // 1建立一个空的vue组件
      var A={
        template:'#vue_a',
        data() {
          return {
            name:'奥巴马'
          }
        },
        methods: {
          send(){
            datavue.$emit("edata",this.name)     //2.使用空vue发送想要传输的数据
          }
        },
      }
      var B={
        template:'#vue_b',
        data() {
          return {
            name:''
          }
        },
        mounted() {                             //在一定的时机接收发送过来的数据
          datavue.$on('edata',name=>{
            this.name=name;
          })
        },
      }
      new Vue({
        el:'#test',
        components:{
          'vue_a':A,
          'vue_b':B
        }
      })

    </script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值