美文网首页
uni-app 事件传值this.$emit和uni.$emit

uni-app 事件传值this.$emit和uni.$emit

作者: iOS乐乐 | 来源:发表于2020-04-20 17:29 被阅读0次

//test.vue组件

<template>
    <view>
        <text>我是test组件{{title}}</text>
        <button type="primary" @click="test">按钮传值回调</button>
        <button type="warn" @click="globleEvent">全局事件订阅</button>
        
    </view>
</template>

<script>
    export default {
        data() {
            return {                
            };
        },
        props:{
            title:'',
            
        },
        methods:{
            test(){
                console.log("组件中的按钮点击事件")
                //触发子视图中的该事件方法
                this.$emit("testShowName",{name:"lele"})
            },
            globleEvent(){
                //全局事件订阅只要注册的页面都可以收到回调值
                uni.$emit("globleEvent","我是全局事件订阅的传值")
            }           
        }
    }
</script>

<style lang="scss">

</style>

//使用test.vue组件
①首先要import导入组件
② components :{test} 注册组件
③组件使用的时候,可以自定义很多的属性,具体值设置在组件中的props属性对象中
④点击按钮触发方法逻辑流程如下
1)@click="test" 组件中触发该方法时间
2)事件方法中触发, 使用该组件自定义的方法this.$emit("testShowName",{name:"lele"}), 去页面中查找该绑定方法,里面有对应的绑定事件
3)接着会触发@testShowName="testEvent"中的testEvent方法
4)紧接着就可以完成整个事件的流程了
testEvent(rel){
console.log(rel)
}

<template>
    <view>
        
        <view class="father clearfix">
            
            <block class="" v-for="(item,index) in titleArr" :key="index">
                <view  class="childOne">
                    <image src="../../static/logo.png" mode="widthFix"></image>
                    <text style="align-items: center;">{{item}}</text>
                    
                </view>
            </block>

            
            
        </view>
        
        <view class="" style="height: 200rpx;">
            <test 
                :title="title"
                @testShowName="testEvent"
            ></test>
        </view>
        
        
    </view>
</template>

<script>
    import test from "@/components/test/test.vue" //引入组建
    export default {
        data() {
            return {
                titleArr:[
                    "1",
                    "2",
                    "3"
                ],
                title:'lele'
            };
        },
        onLoad() {
            //全局事件订阅,只要订阅了事件就可以收到值
            uni.$on("globleEvent",(rel)=>{
                console.log(rel)
            })
        },
        components:{  
            test  //注册组建
        },
        methods:{
            testEvent(rel){
                console.log(rel)
            }
        }
    }
</script>

<style lang="scss">
    *{
        margin: 0;
        padding: 0;
    }
    
    .clearfix:before,.clearfix:after{
        display: block;
        content: "";
    }
    .clearfix:after{
        clear: both;
    }
    
    .father{
        margin: 0rpx 20rpx 0rpx 20rpx;
    }
    
    .childOne{
        display: flex;
        float: left;
        height:200rpx;
        align-items: center;
        width: calc((100% - 120rpx)/2);
        box-shadow: #666 0rpx -1rpx 30rpx;
        margin-left: 40rpx;
        margin-bottom: 50rpx;
        image{      
            margin-left: 20rpx;
            width: 70rpx !important;
        }
        text{
            padding-left: 20rpx;
            flex: 1;
        }
    }
        
</style>

uni.$emit 这个是全局的事件订阅
只要在想要传值的页面onload方法中注册订阅事件,在需要传值的页面传值就可以收到回调

onload(){
      //全局事件订阅,只要订阅了事件就可以收到值
    uni.$on("globleEvent",(rel)=>{
        console.log(rel)
    })
}

触发全局事件订阅的方法为

//全局事件订阅只要注册的页面都可以收到回调值
uni.$emit("globleEvent","我是全局事件订阅的传值")

相关文章

  • uni-app 事件传值this.$emit和uni.$emit

    //test.vue组件 //使用test.vue组件①首先要import导入组件② components :{t...

  • vue 组件之间的传值2018-10-24

    1、子组件往父组件传值,通过emit事件 this.$emit(事件名称,参数) for数据 ...

  • Vue中 子组件与父组件之间的传值

    一、子组件向父组件传值 1、子向父传值 需要用到自定义事件 $emit。 2、this.$emit('自定义的事件...

  • uniapp 组件传值

    组件传值 在 组件A 中,通过 uni.$emit('事件名称',参数) 发送事件 在 组件B 中,通过 uni....

  • vue组件如何通信

    父传子:props; 子传父:this.$emit 自定义事件:event.emit触发 event.$off...

  • 面试题.sync修饰符

    vue规则:组件不能修改props拿外部数据this.$emit可以触发事件,并传参$event可以获取$emit...

  • uniapp全局监听事件的大坑...

    监听全局的自定义事件发射消息:uni.$emit(eventName,OBJECT)监听消息:uni.$on(ev...

  • vue定义组件

    自定义组件 子组件向父组件传值需要通过函数,父组件向子组件传值通过属性 this.$emit当前组件触发一个事件 ...

  • vue组件间传值

    一. 子组件向父组件传值 - $emit 发射事件 1. 子组件$emit发射事件A 2. 父组件通过事件名A...

  • $emit自定义事件

    $emit自定义事件,常常用于子组件向父组件通信定义事件:this.$emit(事件名称,参数1,参数2……参数n...

网友评论

      本文标题:uni-app 事件传值this.$emit和uni.$emit

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