uni.navigateBack怎么传递数组
时间: 2024-01-18 10:18:51 浏览: 93
在uniapp中使用uni.navigateBack函数传递数组的方法如下:
1. 在B页面中,需要传递数组的方法内部,将数组作为参数传递给uni.navigateBack函数的extraData属性。
```javascript
// B页面
uni.navigateBack({
delta: 1, // 返回上一级页面的数量
extraData: {
arrayData: [1, 2, 3] // 要传递的数组数据
}
});
```
2. 在A页面中,使用uni.getOpenerEventChannel方法接收B页面传递的数组数据。
```javascript
// A页面
export default {
onLoad() {
const eventChannel = this.getOpenerEventChannel();
eventChannel.on('arrayData', (data) => {
console.log(data); // 打印接收到的数组数据
});
}
}
```
通过以上步骤,就可以在uniapp中使用uni.navigateBack函数传递数组数据,并在目标页面中接收和使用该数组数据。
相关问题
请优化以下代码 function handleSubmit() { let arr = []; supporting_facilities.value?.forEach((v) => { if (v.checked) { arr.push(v.value); } }); form.value.supportingFacilities = arr.join(","); form.value.photo = fileList.value ?.map((v) => { return v.url ? v.url : v; }) .join(","); form.value.sex = currentRadio.value; proxy.$refs.uForm.validate(async (valid) => { if (valid) { // console.log(form.value, "form.value"); //发布 const res = form.value.id ? await uni.$u.api.house.editRelease(form.value) : await uni.$u.api.house.release(form.value); //编辑发布 if (res.code == 200) { proxy.useToast({ title: "提交成功", }); setTimeout(() => { uni.navigateBack(); }, 1000); } else { proxy.useToast({ icon: "error", title: "提交失败", }); } } }); }
function handleSubmit() {
const arr = supporting_facilities.value?.filter(v => v.checked).map(v => v.value);
form.value.supportingFacilities = arr.join(",");
form.value.photo = fileList.value?.map(v => v.url || v).join(",");
form.value.sex = currentRadio.value;
proxy.$refs.uForm.validate(async valid => {
if (valid) {
try {
const res = form.value.id
? await uni.$u.api.house.editRelease(form.value)
: await uni.$u.api.house.release(form.value);
if (res.code === 200) {
proxy.useToast({
title: "提交成功"
});
setTimeout(() => {
uni.navigateBack();
}, 1000);
} else {
proxy.useToast({
icon: "error",
title: "提交失败"
});
}
} catch (error) {
console.error(error);
proxy.useToast({
icon: "error",
title: "提交失败"
});
}
}
});
}
我进行了以下优化:
1.使用 const 替代 let ,因为 arr 不需要被重新赋值。
2.使用 filter 替代 forEach,因为 forEach 不会返回一个新数组。
3.使用 try catch 包裹异步代码,以捕获异常并进行处理。
4.使用 === 替代 ==,因为 === 更加严格。
5.调整了代码风格,使其更加易读。
if (chooseImgs.length != 0) { chooseImgs.forEach((v, i) => { wx.uploadFile({ // 图片要上传到哪里 url: 'https://images.ac.cn/Home/Index/UploadAction/', // 被上传的文件的路径 filePath: v, // 上传的文件的名称 后台来获取文件 file name: "file", // 顺带的文本信息 formData: {}, success: (result) => { console.log(result); let url = JSON.parse(result.data).url; this.UpLoadImgs.push(url); // 所有的图片都上传完毕了才触发 if (i === chooseImgs.length - 1) { //关闭正在等待的提示 wx.hideLoading(); console.log("把文本的内容和外网的图片数组 提交到后台中"); // 提交都成功了 // 重置页面 this.setData({ textVal: "", chooseImgs: [] }) // 返回上一个页面 wx.navigateBack({ delta: 1 }); } } }); }) } 这个图片提交功能用hbuilderx的vue要怎么改
在 HBuilderX 的 Vue 项目中,你可以使用以下代码来改写图片提交功能:
```javascript
if (this.chooseImgs.length !== 0) {
this.chooseImgs.forEach((v, i) => {
uni.uploadFile({
// 图片要上传到哪里
url: 'https://images.ac.cn/Home/Index/UploadAction/',
// 被上传的文件的路径
filePath: v,
// 上传的文件的名称 后台来获取文件 file
name: "file",
// 顺带的文本信息
formData: {},
success: (result) => {
console.log(result);
let url = JSON.parse(result.data).url;
this.UpLoadImgs.push(url);
// 所有的图片都上传完毕了才触发
if (i === this.chooseImgs.length - 1) {
// 关闭正在等待的提示
uni.hideLoading();
console.log("把文本的内容和外网的图片数组提交到后台中");
// 提交都成功了
// 重置页面
this.textVal = "";
this.chooseImgs = [];
// 返回上一个页面
uni.navigateBack({
delta: 1
});
}
}
});
});
}
```
在以上代码中,`wx.uploadFile` 方法被替换为 `uni.uploadFile`,`wx.hideLoading` 方法被替换为 `uni.hideLoading`,`wx.navigateBack` 方法被替换为 `uni.navigateBack`。其他部分保持不变。
需要注意的是,HBuilderX 使用的是 uni-app 框架,它是基于 Vue.js 的跨平台开发框架,可以一次编写,多端运行。因此,在代码中使用的是 uni-app 提供的 API 来实现相应功能。
希望以上信息对你有帮助。如果还有其他问题,请随时提问。
阅读全文