微信官方API中的 eventChannel.once如何使用?
发布于 6 年前 作者 li50 1811 次浏览 来自 问答

父页面代码

wx.navigateTo({
            url: computeUrl,
            events: {
                Basicrepair: function (data) {
                    console.log(data)
                }
            },
            success: function (res) {
                // 通过eventChannel向被打开页面传送数据
                res.eventChannel.emit('Basicrepair', {
                    data: e.currentTarget.dataset.a
                })
            },
            fail: function (res) {
                console.log(res)
            }
        })

子页面

onLoad: function (options) {
        // 获取页面传参
        const eventChannel = this.getOpenerEventChannel()
        // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
        eventChannel.once('Basicrepair', Data => {
            console.log(Data)
            this.data.componentData = {
                title: Data.data.title,
                code: Data.data.code
            }
            this.setData({
                basicData: Data.data,
                componentData: this.data.componentData
            })
        })
        this.getDetail()
    },

如图上两行代码,这个是一个跳转页面调用 eventChannel实现传递参数的功能

问题是,在子页面的 eventChannel.once ,我在开发者工具下,没法执行到 console.log(data) 这一行,给我感觉更像是没监听到 “Basicrepair” 这个事件

有趣的来了,如果子页面的 eventChannel.once 换成 eventChannel.on 可以执行到 console.log(data) 这一行

???

难道是我姿势不对吗

回到顶部