UniApp小程序开发避坑事项

news/2024/12/18 13:27:17/文章来源:https://www.cnblogs.com/trampeagle/p/18614674

    首次使用UniApp及其UI进行小程序开发,记录项目中需要注意事项,方便以后避坑^_^!

1、uni-forms的使用,如果需要自定义校验,uni-forms上不能绑定rules,需要在data中定义rules,然后在onReady中将uni-forms与rules绑定。

<uni-forms ref="valiForm" :modelValue="valiFormData"></uni-forms>

 

onReady() {this.$refs.valiForm.setRules(this.rules);
},

最后,在表单提交方法中关联校验成功或失败的方法:

submit(ref) {this.$refs[ref].validate().then(res => {//校验成功}).catch(err => {//校验失败console.log('err', err);})
},        

2、uni-file-picker图片上传的使用,单图片上传,需要对部分属性进行设定,如下:(黄颜色部分需要注意必须保持一致,后台接口需要根据这个字段来获取图片)

<uni-forms-item name="idcardFront">
  <input class="uni-input" v-model="valiFormData.idcardFront" placeholder="" v-show="false" />

  <uni-file-picker v-model="valiFormData.idFront" limit="1" :imageStyles="imageStyles" file-mediatype="image" return-type="object" file-extname="png,jpg" @select="uploadIdcardFront">

    <uni-icons custom-prefix="iconfont" type="icon-xiangji" size="40" class="slot-image"></uni-icons>

  </uni-file-picker>

   <uni-section class="mb-10" title="身份证正面"></uni-section>

</uni-forms-item>

图片上传方法:(注意:小程序中不支持new FormData(),不能使用传统方法上传,需要遵循小程序中的规则)

uploadIdcardFront(e){const imgUrl = e.tempFilePaths[0];this.valiFormData.idFront = {"name":e.tempFiles[0].name,"extname":e.tempFiles[0].extname,"url":e.tempFiles[0].url,}uni.uploadFile({url: this.uploadURL, // 替换为你的上传API地址filePath: imgUrl, // 附件路径name: 'idcardFront',method: 'post',header: {"X-Access-Token": uni.getStorageSync("token"),"Content-Type": "multipart/form-data",},success: (res) => { //成功回调let name=JSON.parse(res.data).message; // 成功回调返回结果this.$set(this.valiFormData,'idcardFront',name);},fail: (error) => { //失败回调
                        console.log(error)}        })
},

考虑到,新增页面跟编辑页面共用一个页面,编辑时需要数据回显,增加一个监听事件:(后台接口返回的是图片名称而不是图片路径,编辑时图片回显需要前端拼接图片路径,黄颜色部分是必须设置的字段,否则图片不显示)

watch:{'valiFormData.idcardFront':{handler(newVal, oldVal) {if(newVal && this.isEdit){if(newVal.indexOf('https')>-1){const index = newVal.lastIndexOf(".")+1;const nIndex = newVal.lastIndexOf("/")+1;const extname = newVal.substring(index,);const name = newVal.substring(nIndex,);this.valiFormData.idFront = {"name":name,"extname":extname,"url":newVal,}}}}}
}

3、列表页中点击多次进入详情页后,点击小程序左上角的回退,会发现需要回退多次才能退出,解决方案:

在添加或编辑页面的表单提交成功的方法中,使用uni.navigateBack跳转对应页面,而不是使用uni.navigateTo跳转

uni.navigateBack({url: '/pages/personal/myCarList/myCarList'
});

4、动态标题实现+路由传参

要实现动态标题,首先要注意pages.json文件中,对应页面的navigationBarTitleText需要设置为空,如下:

{"path": "pages/personal/correlateCar/correlateCar","style": {"navigationBarTitleText": "","navigationBarBackgroundColor": "#3B7FFC","navigationBarTextStyle": "#fff"}
},

列表页中的点击事件,如下:(参数传递)

addCar(){uni.navigateTo({url: '/pages/personal/correlateCar/correlateCar?key='+encodeURIComponent(JSON.stringify({}))});
},
editCar(car){uni.navigateTo({url: '/pages/personal/correlateCar/correlateCar?key='+encodeURIComponent(JSON.stringify(car))});
},

添加页面或编辑页面中接收参数,如下:

onLoad(option) {let obj = JSON.parse(decodeURIComponent(option.key))if(obj.plateNo) {uni.setNavigationBarTitle({title:"编辑车辆"})this.valiFormData = obj;} else {uni.setNavigationBarTitle({title:"添加车辆"})}
},

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索全新摸鱼世界,【摸鱼办】一站式轻松解决打工人在线摸鱼的秘密武器!

你好,摸鱼人!👨‍💻 工作再忙,一定不要忘记摸鱼哦 🐟! 有事没事起身去茶水间 ☕️,去厕所 🚾,去走廊走走 🚶,去找同事聊聊八卦 🆕!别老在工位上坐着,钱是老板的 👨‍💼 但命是自己的 🤷‍♂️。00. 什么是【摸鱼办】? 摸鱼办是一款专为上班族打造的…

C10-8 SQL注入II + XSS练习 I

情境参加了培训的第八次课, 涉及到了SQL宽字节注入, 从MySQL注入到GetShell, SQL注入的基本绕过手法, SQL注入防御, SQLmap的使用; XSS基本概念和原理 的介绍(包括3种XSS及其手动测试). 这里是第八课的作业题, 及我的解答. (注: 使用本地虚拟机开启dvwa靶场, 10.0.0.155是ubunt…

【流量分析】基于安全产品DNS隧道流量分析

免责声明 本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。域名准备 选择哪家的云都没问题,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题。 域名添加解析记录 需要准备自己的vps作为DNS…

14伪元素-CSS的继承和层叠-元素特性

一、之前剩下的东西 上节讲解了CSS常见的选择器:通用选择器,元素选择器,类选择器,id选择器,属性选择器,组合选择器,伪类选择器 之前讲到伪类选择器非常多,但是使用的却不多,上次主要讲到动态伪类,其中:hover最重要。 1、伪元素pseudo-elements 常用的伪元素是: :fir…

分享一个线程状态

本文来自博客园,作者:Eular,转载请注明原文链接:https://www.cnblogs.com/euler-blog/p/18614627

Bootstrap popover功能扩展jquery插件

这是一款Bootstrap popover功能扩展jquery插件。该jquery插件在原生Bootstrap popover功能的基础上,添加了一些新的功能,例如自动定位,支持情景模式等。在线演示 下载使用方法 在页面中引入jquery和bootstrap相关文件,以及bootstrap-popover-x.css和bootstrap-popover-x.j…

大学微积分 AB 第四单元:区分的语境应用

(先略)根据上下文解释导数的含义 定的。

欢迎 PaliGemma 2 – 来自 Google 的新视觉语言模型

我们很高兴迎来 Google 全新的视觉语言模型 PaliGemma 2,这是 PaliGemma 的一个新版本。与其前代产品一样,PaliGemma 2 使用强大的 SigLIP 进行视觉处理,但在文本解码部分升级到了最新的 Gemma 2。 模型规模和输入分辨率 PaliGemma 2 提供了新的预训练模型,参数规模包括 3B…

Win11 OneDrive 报错 0x8004def5

突然发现我运行了8万多小时的硬盘报 C5 警告了…抓紧换了块硬盘懒得重装系统直接pe下把文件拷贝到新盘启动后 OneDrive 报错 0x8004def5…参考下:https://www.minitool.com/news/onedrive-error-code-0x8004def5.html简单判断我这个肯定没那么复杂肯定是直接拷贝文件造成的配…

Linux 网页管理工具cockpit使用

无意间在网上看到一款使用比较方便的Linux网页管理工具,感觉很强大,对Linux新手很有用。 平时centos用的比较多,一下以centos7为例,简单列出部署过程。 Cockpit 包通常在 EPEL仓库中提供,需要先下载epel源 yum install -y epel-release.noarch yum clean all yum makecach…

BOE(京东方)“向新2025”年终媒体智享会首站落地上海 六大维度创新开启产业发展新篇章

12月17日,BOE(京东方)以“向新2025”为主题的年终媒体智享会在上海启动。正值BOE(京东方)新三十年的开局之年,活动全面回顾了2024年BOE(京东方)在各领域所取得的领先成果,深度解读了六大维度的“向新”发展格局,同时详细剖析了BOE(京东方)在智能制造领域的领先实践…

如何用管理计划软件制定并落实新年规划,提升团队效率

一、年度规划的重要性 1.1 为什么需要年度规划? 无论是个人职业规划、部门目标还是公司的战略计划,年度规划为每个目标的实现提供了清晰的路线图。一个好的年度规划能够帮助团队明确年度任务,优化资源分配,提高工作效率,并且提供可量化的标准来衡量成果。 具体来说,年度规…