码迷,mamicode.com
首页 > 其他好文 > 详细

组件之间的通信

时间:2018-03-08 13:52:43      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:++   自定义函数   button   .com   http   ops   vue   asc   get   

子组件向父组件通信
案例截图:
  技术分享图片
说明:有一个列表是通过循环出来的,子组件每次点击添加时数量可以添加。并且父组件可以计算结果
子组件代码:
  
<template>
    <div class="pox">
        <button @click="decreaseCart()">减少</button>
        <span>数量:</span>
        <button @click="add()">添加</button>
    </div>
</template>
import Vue from ‘vue‘;

export default {
    props:{
  //time 是父组件循环的每一个东西,分别传输给子组件
        time:{
            type:Object
        }
    },
    methods:{
        add(){
            if(!this.time.count){
                //Vue.set(选择对象,改变谁,改变成什么),这个地方我们添加一个自定义的属性count  用来增加数量,使用Vue.set()方法是为了让DOM更新
                Vue.set(this.time,"count",1)
            }else{
                this.time.count++
            }
            console.log(this.time.count)
            //给父组件传递信息,自定义函数。 add 是传输名,this.time是把谁传过去
            this.$emit(‘add‘, this.time);
        },
        decreaseCart(){
            if(this.time.count){
                this.time.count--
            }
            console.log(this.time.count)
            this.$emit(‘add‘, this.time);
        }
    },
}

 

父组件:
<ul>
    <li v-for="(time,index) in arr" :key="index">
        <div>序列号{{time.id}}</div>
              <div>数量</div>
              <div class="zj">
              <!--父组件接收-->
              <zj1 @add="addFood" :time="time"></zj1>
              {{time.count}}
        </div>
    </li>
</ul>    
computed:{
//循环,添加到数组
        jg(){
            let re = []
            this.arr.forEach((time) => {
                // console.log(time.count,time.id)
                if(time.count){
                    re.push(time.count * time.id)
                }
            });
            return re
        },
    },
    methods:{
       //计算结果
        addFood(target){
             console.log(this.jg)
             let sum = 0;
             for(let i=0; i<this.jg.length;i++){
                 sum+=this.jg[i]
             }
             this.sum = sum
        },
    },

 

父组件向子组件通信:
  
父组件:
<parent>
    <child :child-msg="msg"></child>//这里必须要用 - 代替驼峰
</parent>

data(){
    return {
        msg: [1,2,3]
    };
}

子组件:
props: {
    childMsg: {
        type: Array,
        default: [0,0,0] //这样可以指定默认的值,当然不写也是可以的
    }
}

  

组件之间的通信

标签:++   自定义函数   button   .com   http   ops   vue   asc   get   

原文地址:https://www.cnblogs.com/chengxiang123/p/8527438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!