zoukankan      html  css  js  c++  java
  • vuejs 父子组件传值实例

    如图:需求分析

    父组件是页面,显示表格数据,子组件是一个功能和信息栏,主要是添加信息的表单以及记录表格数据条数。子组件如何获取父组件数据条数呢?

    使用computed计算数据长度

    computed:{
           total(){
            let THIS=this;
            let totalList=THIS.todo.length;//获取数据长度
            return totalList;
           },
           noFinsh(){
            let THIS=this;
            let count=0;
            THIS.todo.forEach(item=>{
                if(item.status==0){
                        count+=1;
                }
    
            });
            return count;
           }
    
        }
    

     组件标签中传值:

    <header-info :postChild='this.total':postNoFinsh='this.noFinsh'  @handleClick='addToTable'></header-info>
    

      

     子组件接收

    props:{ //接收从父组件(index页面中head-info标签中postChild数据)
            postChild:{ //数据格式
                type:Number,
                required:true
            },
            postNoFinsh:{
                type:Number,
                required:true
            }
    
    
        },
    

     子组件显示:

    <el-row class='head_row'>
        <span>总事项:</span><span>{{postChild}}</span> 
        <span>未完成事项:</span><span style="color:red">{{postNoFinsh}}</span>
        <span>总共登入次数:</span><span>{{visitTimes}}</span>
    
       </el-row>   
    

     子组件传值父组件:

    子组件主要把表单数据传递给父组件,一般提交后我们需要清空表单数据,可是这样会导致父组件刚刚添加的数据也被清空,所以我们可以拷贝一份数据给父组件,同时将原来表单数据清空

    computed:{
            //使用计算属性
            formData2(){
                //拷贝出一份表单数据,使用拷贝出的数据进行提交
                let newObj=Object.assign({}, this.formData);
                return newObj;
    
            }
    
        },
    

      提交数据:

    add(){
              debugger;
              this.formData2.date=getYMDdate(this.date);
              /*注意使用父子组件通过$emit传数据依然是一个双向绑定过程
                提交之后如果后面直接清空数据会再次触发数据的改变,导致父组件表格数据也为空
              */
              //表单验证
              if(isInt(this.formData2.importantStar)){
                this.$emit('handleClick',this.formData2);          
                this.date='';
                this.formData.importantStar='';
                this.formData.text='';
    
              }else{
                alert('请输入整数');
              }
              
    
            },
    

      

     

  • 相关阅读:
    SE新手游操控创新:一个按键=五个技能
    技术流:6大类37种方式教你在国内推广App
    日本著名作家教你怎么设计游戏人物
    [Kingdom Rush]团队分享:如何做塔防手游
    十年老兵谈卡牌手游开发:拼5项技能
    简单做好游戏中“攻击动作”的3个窍门
    Linux系统时间同步方法小结
    kafka原理深入研究 (转 )
    Kafka原理总结
    node踩坑之This is probably not a problem with npm. There is likely additional logging output above.错误
  • 原文地址:https://www.cnblogs.com/luojunweb/p/8496288.html
Copyright © 2011-2022 走看看