uniapp返回上一页时数据自动更新

974 阅读1分钟

uniapp 返回上一页时数据自动刷新

完整代码如下

onNavigationBarButtonTap(option) {
if (option.text == '保存') {
  console.log("保存成功", this.polo);
  this.$http.post(
   "/stadium-estimate/edit", {
   "stadium_id": this.polo.stadium_id,
   "stadium_name": this.desc},(res) => {						uni.showToast({
		title: "保存成功",
		duration: 2000,});
	setTimeout(() => {
	// 上一页重新请求数据 刷新
	let pages = getCurrentPages(); // 当前页面
	let beforePage = pages[pages.length - 2]; // 上一页
        //返回上一页uni.navigateBack({})
        uni.navigateBack({
	  success: function() {
          // 执行上一页的demand方法(该方法是上一页请求数据的方法)
            beforePage.demand(); }
			   });
		        }, 1000)

		   })
		}
	}

上一页代码如下

onLoad(option) {
    this.uid = option.id;
    // demand方法
    this.demand();
    }
mounted() {}
// 请求数据
demand() {
    this.$http.get(
    "/stadium-estimate/info", {
		"id": this.uid
                },
		(res) => {
		this.getUserList = res.Data
		})
	}

解释

  1. uniapp中getCurrentPages()方法可以获取当前页面的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
  2. pages[pages.length - 1],为当前页。(因为数组下标从0开始,所以需要减1)
  3. let beforePage = pages[pages.length - 2],为获取上一页。
  4. uni.navigateBack()为返回上一页。
  5. beforePage.onLoad()为调用上一页的onLoad方法(onLoad方法就是上述在onLoad中调用的请求数据demand()方法)

上面代码的含义为:当返回上一页的方法执行成功后,调用上一页的onLoad中demand()方法