安卓 Page.onLoad() eventChannel.once 不生效
发布于 7 年前 作者 guiying45 10442 次浏览 来自 官方Issues

 Wechatlib:2.9.3

父页面:

navigateTo(e) {
    // console.log(e.currentTarget.dataset.url)
    let url = e.currentTarget.dataset.url;
    let files = this.data.files;
 
    if (utils.notEmpty(url) && files.length > 0) {
 
        wx.navigateTo({
            url: url,
            success: function(res) {
                //触发子页面的一个名为acceptDataFromParentPage事件,并传递数据 files
                //通过eventChannel向被打开页面传送数据
                res.eventChannel.emit('acceptDataFromParentPage', files)
            }
        })
 
    } else {
        utils.showModalNoCancel('请选择图片', '我知道了');
    }
},

子页面:

/**
 * 生命周期函数--监听页面加载
 */
onLoad: function(options) {
 
    const eventChannel = this.getOpenerEventChannel()
    // 监听acceptDataFromParentPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.once('acceptDataFromParentPage', data => {
        // console.log(data)
        data.forEach(element => {
            this.setData({
                files: this.data.files.concat({
                    imsrc: element
                })
            })
        })
    });
},

2 回复

同不生效

官方能否给 once的使用姿势?

代码和楼主的差不多,但是都执行不到控制台那一步

麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

回到顶部