c***@126.com
c***@126.com
  • 发布:2020-04-16 10:43
  • 更新:2020-04-21 19:33
  • 阅读:2786

【报Bug】getCurrentPages()方法返回的pages数组中元素的setData无法调用,例“'prevPage.setData' is undefined”

分类:HBuilderX

详细问题描述

var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
isDoRefresh:true
})
uni.navigateBack();

上述代码中报错:'prevPage.setData' is undefined

[内容]

重现步骤

在HbuilderX中新建一个uniapp项目,新建两个页面,其中一个页面跳转另一个页面之后,在第二个页面中onLoad函数内调用上述方法,会发现对应问题
[结果]
'xxxxx.setData' is undefined

IDE运行环境说明

HBuilderX

[IDE版本号]
HbuilderX 2.6.11.20200409
[windows版本号]
win10
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
运行端:h5
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
HbuilderX创建

[可重现代码片段]

        onLoad() {  
        var pages = getCurrentPages();  
        var currPage = pages[pages.length - 1]; //当前页面  
        var prevPage = pages[pages.length - 2]; //上一个页面  
        //直接调用上一个页面的setData()方法,把数据存到上一个页面中去  
        prevPage.setData({  
                isDoRefresh:true  
        })  
         uni.navigateBack();  
    },  

联系方式

tel: 17551083871
[QQ]
215440807

2020-04-16 10:43 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com

我也出现同样问题了,升级版本之后,这个报错,不知道官方能看到这个帖子不?

1***@qq.com

1***@qq.com

同样遇到该问题

DCloud_UNI_HT

DCloud_UNI_HT

uni-app不支持也不可以使用 setData
setData 是小程序的方法 设置的是小程序Page对象上的data,并非更新的vm对象上的data,即使不报错,也不可以使用,这样会导致数据同步问题。

修改其他页面数据,推荐使用 uni.$emit()

  • 7***@qq.com

    通过getCurrentPages更新上一个页面data中的数据时(prevPage.xxx),会出现对应数据undefined但不是每次都会出现这种情况,您知道这种情况需要怎么处理嘛

    2023-05-18 11:04

  • DCloud_UNI_HT

    回复 7***@qq.com: 虽然可以,但是不推荐使用 getCurrentPages 更新其他页面的数据 ,会出现无法预期的情况,建议使用 ,页面路由的 events 事件,https://uniapp.dcloud.net.cn/api/router.html#navigateto

    2023-05-22 16:19

该问题目前已经被锁定, 无法添加新回复