美文网首页
02.4 - vue 组件传参,监听子组件事件

02.4 - vue 组件传参,监听子组件事件

作者: 大大的小小小心愿 | 来源:发表于2019-01-14 11:02 被阅读0次

    一、需求分析:

    父组件中点击事件显示出子组件;并且监听子组件内部事件(在父组件中隐藏子组件等操作)。


    二、代码

    1、父组件【Start】点击事件,显示子组件【Public】 (props方法)

    父组件代码【Srart】:

    <li class="flex-con sel" @click="selModelFn(1)">蔬果</li>
    
    <public v-if="alertDara"   -------------------------------【1】
        :alertDara="alertDara"   -----------------------------【2】
        @alertBack="alertBackFn"    --------------------------【3】
        @alertSure="alertSureFn"   ---------------------------【4】
    ></public>  
    
    image.png

    事件

        selModelFn: function(v) {
          console.log(v);
          // 弹框样式
          var alertDara = {
            title: "启动五谷模式",
            titleColor: "pink",
            content: "设备已经是启动模式,为了保障安全,请在设备机上点击启动按钮。",
            contentColor: "gray",
            btn: ["返回", "确定"],
            btnColor: ["", ""]
          };
    
          this.alertDara = alertDara;
        },
    
    
        alertBackFn: function(data) {
          this.alertDara = '';
          console.log("点击了取消",data)
        },
        alertSureFn:function(data){
           this.alertDara = '';
          console.log("点击了确定",data)
        }
    

    [图片上传中...(image.png-3c3c38-1552016390278-0)]

    1、selModelFn 事件,改变 'alertDara' 值,显示或隐藏子组件(Public) 。 【1】
    2、通过 props 方法向 子组件传参;子组件拿到参数显示对应的内容 。【2】
    3、监听子组件事件(alertBackFn),进而触发父组件事件(alertBackFn),继续下一步操作【3/4】
    注:通过 $emit 方法监听子组件事件,'alertBack' 为 emit 的属性名称(自定义)。
    props传参详解:https://www.jianshu.com/p/d0cc6eb0226e



    子组件代码:

    <div
      class="btn-back flex-con"
      v-if="alertDara.btn[0]"
      :style="{color:alertDara.btnColor[0]}"
      @click="alertBackFn"
    >{{alertDara.btn[0]}}</div>
    

    [图片上传中...(image.png-672b02-1552016063700-0)]

    事件

        props:['alertDara'],     --------------------------------------- 【1】
    
        alertBackFn:function(){  --------------------------------------- 【2】
          this.$emit('alertBack', '这是子组件传递的消息');
        },
        alertSureFn:function(){
    
          this.$emit('alertBack', '这是子组件传递的消息');
        }
    
    image.png

    1、拿到父组件传的参数,显示子组件相应内容
    2、子组件事件:通过 emit 向父组件传参,父组件再通过 props 改变子组件显示内容。eimit子组件向父组件传参:https://www.jianshu.com/p/3f8dff126d90
    [图片上传中...(image.png-b03028-1552016030915-0)]

    gitHub: https://github.com/caoguoli/vue-maskALert

    相关文章

      网友评论

          本文标题:02.4 - vue 组件传参,监听子组件事件

          本文链接:https://www.haomeiwen.com/subject/upcddqtx.html