uniapp跳转传递对象
时间: 2023-08-11 22:05:38 浏览: 50
在uni-app中,可以使用uni.navigateTo或uni.redirectTo进行页面跳转,并且可以通过url参数传递对象。
首先,在跳转前,将需要传递的对象转为字符串,可以使用JSON.stringify()方法。例如:
```
let obj = { name: 'John', age: 25 };
let objStr = JSON.stringify(obj);
```
然后,将转换后的字符串作为url参数传递给目标页面。例如:
```
uni.navigateTo({
url: '/pages/targetPage?obj=' + encodeURIComponent(objStr)
});
```
注意要使用encodeURIComponent()方法对字符串进行编码,以确保特殊字符正确传递。
在目标页面中,可以通过uni.getLaunchOptionsSync().query获取url参数,并将传递的对象字符串转为对象。例如:
```
onLoad: function(options) {
let objStr = options.obj;
let obj = JSON.parse(decodeURIComponent(objStr));
console.log(obj);
}
```
这样就可以在跳转页面间传递对象了。注意在实际使用中,可能需要对参数进行类型判断和错误处理,以确保数据正确传递和解析。
相关问题
uniapp 跳转传递对象
在uni-app中实现页面跳转并传递对象参数的方法有两种:
1. 将需要传递的对象参数转为JSON字符串,然后使用encodeURIComponent进行编码,拼接在url后面。在跳转后的页面通过onLoad事件获取传递的对象参数,并使用decodeURIComponent解码,然后转为对象。
2. 使用url拼接将参数对象传递到目标页面,在目标页面的onLoad生命周期函数中通过options参数获取传递过来的参数,然后使用decodeURIComponent解码,再转为对象。
下面是具体的实现代码:
方法一:
```javascript
// 要跳转的页面路径
const url = '/pages/detail/detail';
// 要传递的对象参数
const obj = { id: 123, name: 'test' };
// 将对象参数转为JSON字符串,并使用encodeURIComponent编码
const params = encodeURIComponent(JSON.stringify(obj));
// 跳转页面并传递对象参数
uni.navigateTo({ url: `${url}?params=${params}` });
```
在跳转后的页面的detail.vue文件中:
```javascript
export default {
data() {
return {
obj: null
}
},
onLoad(options) {
// 获取传递的对象参数,使用decodeURIComponent解码,并转为对象
if ('params' in options) {
this.obj = JSON.parse(decodeURIComponent(options.params));
}
}
}
```
方法二:
```javascript
// 要传递的对象参数
let infoForm = {
phone: this.form['客户信息']['办理宽带号码'],
name: this.form['客户信息']['姓名'],
city: this.form['客户信息']['详细地址'].address,
cityCode: this.form['客户信息']['详细地址'].cityCode
};
// 将参数对象转为JSON字符串,并使用encodeURIComponent编码
let params = encodeURIComponent(JSON.stringify(infoForm));
// 跳转页面并传递对象参数
uni.navigateTo({ url: '/pages/broadband/broadband?item=' + params });
```
在跳转后的页面的broadband.vue文件中的onLoad生命周期函数中:
```javascript
onLoad(options) {
// 获取传递的对象参数,使用decodeURIComponent解码,并转为对象
if ('item' in options) {
this.infoForm = JSON.parse(decodeURIComponent(options.item));
}
}
```
uniapp跳转页面传递对象
在uni-app中,可以通过使用路由参数来实现页面之间的对象传递。以下是一个示例:
在发送页面的组件中,可以使用`uni.navigateTo`方法跳转到目标页面,并将对象作为参数传递:
```javascript
// 发送页面的组件
uni.navigateTo({
url: '/pages/receive/receive?data=' + JSON.stringify(obj)
})
```
在接收页面的组件中,可以通过`this.$route.query`获取传递的参数,并将其转换为对象:
```javascript
// 接收页面的组件
export default {
onLoad(query) {
const data = JSON.parse(query.data)
console.log(data)
// 对象已成功传递到接收页面
}
}
```
在上述示例中,`obj`是要传递的对象,通过`JSON.stringify`将其转换为字符串,并作为参数传递给目标页面。在目标页面中,通过`JSON.parse`将字符串转换回对象。