收藏
回答

微信官方API中的 eventChannel.once如何使用?

父页面代码

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) 这一行

???

难道是我姿势不对吗



回答关注问题邀请回答
收藏

3 个回答

  • 不种蘑菇不摸鱼
    不种蘑菇不摸鱼
    2020-02-29

    用on就可以,用once无效

    2020-02-29
    有用 1
    回复
  • -。-
    -。-
    2020-03-22

    我试了也没用,怎么没有官方出来回答一下这个问题

    2020-03-22
    有用
    回复
  • 可乐飞冰
    可乐飞冰
    2020-02-23

    同问!这文档真的写得不好吧

    2020-02-23
    有用
    回复
登录 后发表内容
问题标签