小程序传值的一些坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30299243/article/details/82791394

对于小程序而言,传值的方式倒是很简单,直接拼参数就行,例如:

wx.navigateTo({

url: '../payOne/addPassenger/addPassenger?contacts=' + contacts + "&phone=" + phone + "&sfz=" + sfz

})

上面就是一个典型的跳转页面并传值的方法。

在接收界面里的onLoad方法:

onLoad: function(e) {

console.log("接收的参数:" + e.contacts + "*******" + e.phone + "***********" + e.sfz)

}

这样就可以接收上个界面传递的值了。处理之后,需要返回上一个界面,如果不回调,直接回到上个界面:

let pages = getCurrentPages();

let prepage = pages[pages.length - 2];

wx.navigateBack({})

如果需要给上一个界面传值,那么需要添加参数:

let pages = getCurrentPages();

let prepage = pages[pages.length - 2];

prepage.setData({

contacts: contacts.toString(), //传递的参数

phone: phone.toString(), //传递的参数

sfz: sfz.toString(), //传递的参数

jump: "true"

});

wx.navigateBack({})

然后在第一个界面的onshow方法里接收:

var contacts = this.data.contacts; //获取联系人

var phone = this.data.phone; //获取电话

var sfz = this.data.sfz; //获取身份证

ok!!!接收的参数过来了。这个就是简单的传参方法。

对于简单的需求没问题,如果是一个列表,

点击第一个,进行更改操作,需要把id传过去,一顿操作之后,在返回来,再根据id就能更改了。问题来了,如果,更改了第一个新疆的,此时的id是0,在点击第二个,此时的操作不是更改,而是返回,那么就会出错,你会发现,第二个里面的值,全都变成了第一条数据里的值。原因在于,点击的时候,需要把里面的值传过去,因为客户有可能只会更改几个值,其他的不改,所以还要把剩余不更改的值在拿回来。当,点击小程序上面的返回时,返回的数据依然是上次的数据。但是因为点击的id变了,二传递的值却没变,所以造成数据错乱。二小程序没有返回的操作。本人的方法是,在app里定义一个参数A,根据这个A的值来判断是否做了更改,如果更改,就进行操作,如果未更改,则不操作。二更改A的值,则在第二个界面里面的onUnload方法操作。

猜你喜欢

转载自blog.csdn.net/qq_30299243/article/details/82791394