美文网首页
简易版微信小程序跨页面传值

简易版微信小程序跨页面传值

作者: 不会吃鱼的小猫 | 来源:发表于2019-11-25 13:59 被阅读0次

    1.定义一个eventBus.js

    var list = {},
        listen,
        trigger,
        remove;
    
    //监听事件函数
    listen = function (key, fn) {
        if (!list[key]) {
            list[key] = []; //如果事件列表中还没有key值命名空间,创建
        }
        list[key].push(fn); //将回调函数推入对象的“键”对应的“值”回调数组
    };
    
    //触发事件函数
    trigger = function () {
        var key = Array.prototype.shift.call(arguments); //第一个参数指定“键”
        var msg = list[key];
        if (!msg || msg.length === 0) {
            return false; //如果回调数组不存在或为空则返回false
        }
        for (var i = 0; i < msg.length; i++) {
            msg[i].apply(this, arguments); //循环回调数组执行回调函数
        }
    };
    
    //移除事件函数
    remove = function (key, fn) {
        var msg = list[key];
        if (!msg) {
            return false; //事件不存在直接返回false
        }
        if (!fn) {
            delete list[key]; //如果没有后续参数,则删除整个回调数组
        } else {
            for (var i = 0; i < msg.length; i++) {
                if (fn === msg[i]) {
                    msg.splice(i, 1); //删除特定回调数组中的回调函数
                }
            }
        }
    };
    
    module.exports = {
        listen: listen,
        send: trigger,
        remove: remove
    }
    

    2.定义时间module

    /**
     * Data: 2018/06/15
     * Auth: Dongyunlong
     * Desc: eventModel
     */
    var u = {};
    
    
    //定义EVENT key
    u.EVENT_SALE_CHOOSEGOODS = 'sale_choosegoods';                      //销售
    
    module.exports = u;
    

    3.在app.js中定义常量

    
    var Event = require('./utils/event/EventBus.js'); //event Bus
    var EventModel = require('./utils/event/EventModel.js'); //event
    
    
    App({
        onLaunch: function (options) {
        },
        constants: {
            //事件
            Event: Event,
            EventModel: EventModel,
        }
    })
    

    4.页面中使用

    const app = getApp();
    const base = getApp().constants;
    
    
    //在onLoad中
    base.Event.listen(base.EventModel.EVENT_SALE_CHOOSEGOODS, function (res) {
      //...
    })
    
    //在onUnload函数中
    base.Event.remove(base.EventModel.EVENT_SALE_CHOOSEGOODS);
    
    //发送任意类型的数据
    base.Event.send(base.EventModel.EVENT_SALE_CHOOSEGOODS, '我要发送的东西');
    
    

    相关文章

      网友评论

          本文标题:简易版微信小程序跨页面传值

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