zoukankan      html  css  js  c++  java
  • 利用观察者模式 进行不同页面的传值

    // 创建文件 observer.js
    const eventMap = {};
    
    //监听事件
    //$on(事件名字, 回调函数1)
    //$on(事件名字, 回调函数2)
    const $on = function(eventName, eventCallback){
        //判断事件是否有对应的装载事件回调的容器
        if(!eventMap[eventName]){
            eventMap[eventName] = [];//没有就创建
        }
        //将事件回调缓存在容器中
        eventMap[eventName].push(eventCallback);
    
    }
    
    
    //触发事件
    //$emit(事件名字, 传递的参数);
    const $emit = function(eventName, params){
    //$emit = function(eventName, ...rest){
        //取得事件所对应的所有回调方法
        let eventList = eventMap[eventName];
        if(!eventList)
            return;
        //遍历所有回调方法
        eventList.map(cb=>{
            cb(params);
    //        cb(...rest);
        })
    }
    
    
    //移除事件
    //$off(eventName);//移除所有监听
    //$off(eventName, callback);//移除指定监听
    const $off = function(eventName, callback){
        //取得事件所对应的所有回调
        let eventList = eventMap[eventName];
        if(!callback){
            //移除所有监听
            eventMap[eventName] = null;
        }else{
            //移除指定监听
            eventMap[eventName] = eventList.filter(cb=>{
                //判断事件是否是需要移除的
                return cb != callback
            })
        }
    }
    
    export default {
        $on,
        $emit,
        $off
    }
    // 需要的页面进行引入
    import observer from '../../utils/observer.js'
    // 监听 observer.$on(
    'calibrationVal', (openId) => { // 获取最近一次检测数据 this.getLatelyData(openId) // 获取最近三天检测数据 this.getThreeData(openId) })
    // 需要的页面进行引入

    import observer from '../../utils/observer.js' //反向传值 //触发监听的事件 observer.$emit('calibrationVal', this.data.openId); wx.navigateBack({ });
  • 相关阅读:
    tornado用户指引(三)------tornado协程使用和原理(二)
    利用tornado使请求实现异步非阻塞
    在tornado中使用异步mysql操作
    Tornado 线程池应用
    Tornado异步与延迟任务
    tornado用户指引(二)------------tornado协程实现原理和使用(一)
    Tornado用户指引(一)-----------异步和非阻塞I/O
    Tornado异步之-协程与回调
    Python核心框架tornado的异步协程的2种方式
    c++ Map使用
  • 原文地址:https://www.cnblogs.com/yangzhenhong/p/10955549.html
Copyright © 2011-2022 走看看