vue中组件间的传参

1.父传子

  父组件准备一个数据,通过自定义属性给子组件赋值,进行传递

  在子组件中通过 props 属性来接收参数

<body>
    <div id="app">
        <son passdata="msg"></son>
    </div>
</body>
<script>
    Vue.component('son', {
        template: '<div>父组件的数据为:{{ passdata }}</div>',
        props: ['passdata']
    })
    new Vue({
        el: '#app',
        data: {
            msg: '父组件数据'
        }
    })
</script>

 

2.子传父

 

  在子组件准备一个数据,通过 this.$emit('自定义事件', '参数'),进行传递。this.$emit 相当于要执行子组件的自定义事件,并且传入参数
  在父组件中给子组件注册好自定义事件,并且实现这个方法,就可以得到参数了。<son @自定义事件="getval">

<body>
    <div id="app">
     //myevent是子组件中的事件 <son @myevent='getVal'></son> </div> </body> <script> Vue.component('son', {
     //①通过事件触发passval方法 template: `<div>给父组件传参<button @click="passval">传参</button></div>`, data(){ return { son: 'son数据' } }, methods: { passval(){
          //②执行子组件中的myevent事件,通过$emit进行传递(this.son为传递的数据) this.$emit('myevent', this.son) } } }) new Vue({ el: '#app', methods: {
       //③value就是传递过来的数据 getVal(value){ console.log(value) } } }) </script>

 

3.并列组件传参

  创建一个公用的 bus (vue 实例)  var vm = new Vue()

  在 A 组件传入数据  vm.$emit('passval', this.name)

  在 B 组件接收数据  vm.$on('passval' ,function(value){})

 

<body>
    <div id="app">
        <coma></coma>
        <comb></comb>
    </div>
</body>
<script>
  //①创建一个公共实例 var vm = new Vue() Vue.component('coma', {
     //通过事件触发 myclick方法去传参 template: `<div><button @click="myclick"></button></div>`, data() { return { name: 'coma' } }, methods: { myclick: function(){
          //向公共实例传入数据 vm.$emit('passval', this.name) } } }) Vue.component('comb', { template: `<div>comb</div>`, mounted() {
        //接收数据 vm.$on('passval', function(value){ console.log(value) }) } }) new Vue({ el: '#app' }) </script>

  

转载于:https://www.cnblogs.com/xhrr/p/10624834.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值