zoukankan      html  css  js  c++  java
  • wepy中组件之间通信方法

    events

    events是WePY组件事件处理函数对象,存放响应组件之间通过broadcast、emit、$invoke所传递的事件的函数。

    $broadcast —— 父往子传

    $broadcast事件由父组件发起,所有的子组件都会收到父组件发出的数据,嗯,类似于村口的广播大喇叭。他的传播顺序为:

    在父组件的某个函数内,向子组件下发了index-broadcast这个通知,如下:

    // template
    <mybtn></mybtn>
    
    // script
    onShow(){
      this.$broadcast('index-broadcast', '我正在测试哈哈哈哈');
    }

    那么在子组件中,可以用这种方法来接受数据:

    // template
    <button>{{title}}</button>
    
    // script
    props = {
        title: String
    }
    events = {
      'index-broadcast': (...args) => {
        this.title = args[0];   // 我正在测试哈哈哈哈
        //可以通过以下方法拿到子组件名称+拿到数据的事件名称+事件的来源
        let $event = args[args.length - 1]    
        console.log($event)
        console.log(`${this.$name} receive ${$event.name} from ${$event.source.$name}`)
      }
    }

    $emit —— 子往父传

    emit 与 broadcast 正好相反,事件发起组件的所有祖先组件会依次接收到emit事件,如果组件 ComE 发起一个 emit 事件,那么接收到事件的先后顺序为:组件ComA、页面Page_Index。如下图:

    onLoad(){
        this.emptyData = this.$parent.emptyData
        setTimeout(() => {
            this.$emit('index-emit', 'jack')
        }, 3000)
    }

    我们可以看到counter组件的plus方法向父组件$emit了一个一个名叫index-emit的方法,父组件该如何接收他?
    直接在父组件的events里面写就好啦:

    events = {
        'index-emit': (...arg) => {
            this.username = arg[0];   
        }
    }

    $invoke —— 父往子传

    $invoke是一个页面或组件对另一个组件中的方法的直接调用,通过传入组件路径找到相应的组件,然后再调用其方法。

    比如,想在页面Page_Index中调用组件ComA的某个方法:

    this.$invoke('ComA', 'someMethod', 'someArgs');

    在父组件中,想要调用子组件counter的某个方法,如下:

    this.$invoke('emptyStatus', 'showEmpty', 111, 222)
    this.$invoke('emptyStatus', 'hideEmpty', 333, 444)

    那么在子组件中可以通过这样来接收父组件传过来的参数:

    methods = {
        showEmpty(a, b){
            console.log(a);   // 111
            console.log(b);   // 222
            this.blockStatus = true
        },
        hideEmpty(a, b){
            console.log(a);   // 333
            console.log(b);   // 444
            this.blockStatus = false
        }
    }

    文章来源:https://www.jianshu.com/p/c87ab3c1681d

  • 相关阅读:
    起点中文网小说爬取-etree,xpath,os
    拉勾网爬虫--待改正
    破解有道词典翻译-版本二
    pycharm错误:11001
    自动化selenium 测试之道(一)
    valgrind 详细说明
    sar命令使用详解
    Linux CPU实时监控mpstat命令详解
    Linux IO实时监控iostat命令详解
    RPM安装命令总结
  • 原文地址:https://www.cnblogs.com/xulinjun/p/11743572.html
Copyright © 2011-2022 走看看