微信小程序事件传值EventChannel Cannot read property ‘data‘ of undefined

wx.navigateTo({
    url: '../motto/motto',
    events: {
        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
        acceptDataFromOpenedPage: function (data) {
            console.log(data)
        },
    },
    success:function (res) {
        // 通过eventChannel向被打开页面传送数据
        res.eventChannel.emit('acceptDataFromOpenerPage',
            {data: this.data.motto})
    }
})

如果这么写,会遇到“Cannot read property 'data' of undefined ”的错误。

如果改成箭头函数的写法,就不会出错。

    wx.navigateTo({
            url: '../motto/motto',
            events: {
                // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
                acceptDataFromOpenedPage: function (data) {
                    console.log(data)
                },
            },
            success: (res) => {
                // 通过eventChannel向被打开页面传送数据
                res.eventChannel.emit('acceptDataFromOpenerPage',
                    {data: this.data.motto})
            }
        })

分析原因,箭头函数是ES6的写法,不同的写法,会导致“this”的指代层级不同,所以会找不到data属性。


版权声明:本文为shaojiuli原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。