vue+element 子父组件传值

1.子传父(弹窗)

首先得有弹窗,实现方式:

父组件:

添加用户

  //挂载组件

******省略一堆代码*****

//引入子件弹框

import saveUser from "@/****/****/****"   //引入挂载的组件

在components中定义 saveUser     //挂载的组件名称

在data中定义 showSaveUser:false //默认不可见

在methods中定义saveUser方法

saveUser(){

     this.showSaveUser=true;

     this.$nextTick(()=>{

         this.$refs.saveUser.init();//saveUser 指的是挂载的组件名称

     })

}


子组件:

1.使用props接收父组件给自己定义的组件名称  =>  props:["saveUser"]

2.给一个init(),在methods中定义init方法:

init(){

this.centerDialogVisible = true;  //指的是 弹框是否显示  center**Visible 是自己定义的哦,只要保证data中的名称与:visible.sync同名即可

}


下面说一下传值:

父给子传值:

1.使用调用子组件init()时在括号里传参数  子组件直接接受  快准狠 哈哈

2.v-bind props 传值:

在父件中的挂载子组件代码中定义 方法:

在子组件中props接收user

props:["user"]

(但是不知道为啥有的时候不好使,所以全局都在用第三个方法了。。。)

3.bus传值:前提是要引入bus组件

Vue.prototype.bus = new Vue();

在父组件调用子组件的方法中加入传值的方法(test:算是对象名称,test1:属性名称)

this.bus.$emit("test",{"test1",1})

在子组件的接受方法中加入:

this.bus.$on("test",(data)=>{

    console.log(data.test1);

})

子给父传值:

父组件操作如下:

1.给组件绑定监听事件,名字随便,和后面对应起来就好了!!!!!例子中我定义为 listen

2.定义一个getNewUser方法

methods:{

     getNewUser(data){

           //这里写拿到了子件传回值要做的事情

           console.log(data);

     }

}

如何才能从子件给附件传值呢?我们使用如下方法即可:

this.$emit('listen',data);//listen 指的是 刚才我们在父组件中定义的监听事件名称 一定要对应!! data指的是要穿的值哦~

你可能感兴趣的:(vue+element 子父组件传值)