收藏
回答

A页面如何调用B页面的that.setData或者重载B页面?

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug this.setData 客户端 6.5.3 2.0.0

A页面提交对后台数据库数据进行了更新。

B页面使用到相关数据。需要同步更新。

问题:

A页面完成提交后,如何触发B页面更新?

但我想知道除了onShow刷新B页面,是否还有其他方法?


A页面提交更新频率非常小,如果使用onShow,那么每次切换到B页面都得发送请求到后台请求获取数据

(基本每次都是获取一样的数据。本来是要onLoad获取一次就好了)。

这个感觉不合理啊。这种情况多了,那不是服务器压力山大!!!






最后一次编辑于  2018-12-26  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

9 个回答

  • 微云
    微云
    2018-12-26

    getCurrentPages()

    2018-12-26
    赞同 3
    回复
  • Miss,,,right,,,
    Miss,,,right,,,
    2018-12-26

    var that = this

    var pages = getCurrentPages();//当前页面栈

    if (pages.length > 1) {

        var beforePage = pages[pages.length - 2];//获取上一个页面实例对象

        //我的订单列表局部刷新

        if (beforePage.detailsRefreshPages) {

            console.log(that.data.index)

            beforePage.detailsRefreshPages(that.data.index, types);//触发父页面中的方法

        }

    }

    2018-12-26
    赞同 2
    回复 2
    • pelin
      pelin
      2018-12-26

      谢谢!感觉这个正是我想要的。

      2018-12-26
      回复
    • Miss,,,right,,,
      Miss,,,right,,,
      2018-12-26回复pelin

      不客气

      2018-12-26
      回复
  • pelin
    pelin
    2018-12-26

    总结一下,有四个方案:

    1. 使用缓存setStorageSync

    2. 使用全局变量

    3. 使用view隐藏/显示。伪页面实现。

    4. 使用getCurrentPages()。

    我考虑下看看用那种方便吧。

    第一次发帖这么多人回帖。非常感谢大家!


    2018-12-26
    赞同 1
    回复
  • 管凯旋
    管凯旋
    2018-12-26

    A页面提交的时候存个字段到缓存,B页面onshow根据缓存请求数据并改字段为false

    2018-12-26
    赞同 1
    回复
  • ==
    ==
    2018-12-26

    放在全局变量里面,a提交完刷新全局变量就行了,B在全局变量里面拿值

    2018-12-26
    赞同 1
    回复 2
    • 铭锋科技
      铭锋科技
      2018-12-26

      少不了onShow呀

      2018-12-26
      回复
    • ==
      ==
      2018-12-26回复铭锋科技

      emm,。。。他没说一定要用onshow处理吧!。。       =.=

      2018-12-26
      回复
  • 铭锋科技
    铭锋科技
    2018-12-26

    AB页面放到一块不就结了

    2018-12-26
    赞同 1
    回复
  • A无声
    A无声
    2018-12-28

    自己写一个简单的订阅,触发(观察者模式);在A页面订阅A事件;在B页面触发A事件就行;

    我一般遇到这个事情都这么干;

    2018-12-28
    赞同
    回复
  • Lucien
    Lucien
    2018-12-27

    如果A在B的后面可以用发布订阅的模式来做

    2018-12-27
    赞同
    回复
  • 卢霄霄
    卢霄霄
    2018-12-26

    不知道在A页面用页面栈能行不,我没试过

    let page = getCurrentPages().reverse1()[1]
    page.setData({
        xxx: xxxx
    })

    这个..reverse1改成reverse reverse加(会报错。。

    2018-12-26
    赞同
    回复