uni-app开发日志:将schema2code生成的新增页和修改页整合成一页

2024-08-28 06:36

本文主要是介绍uni-app开发日志:将schema2code生成的新增页和修改页整合成一页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有没有想过,add和edit页面其实没多大差别?
我之前自研的系统add和edit都是一个页面,只要判断一下当前有没有id传递来,为空来就是新增。
这样如果页面修改时,才能尽量少改动代码,少出错。

对比add.vue和edit.vue

其实代码几乎没差别,主要就是edit.vue多了一个获取id和依靠id获取具体数据,不一样之处一个是新建入库一个是修改库中数据。
我现在把不一样的代码列出来。

// html部分一模一样
<template>
...
</template>
<script>
...
// edit.vue多一个获取id
onLoad(e) {if (e.id) {const id = e.idthis.formDataId = idthis.getDetail(id)}
},
...
methods: {...// add.vue是新增,edit.vue是修改	// 这是add.vuesubmitForm(value) {// 使用 clientDB 提交数据return db.collection(dbCollectionName).add(value).then((res) => {uni.showToast({title: '新增成功'})this.getOpenerEventChannel().emit('refreshData')setTimeout(() => uni.navigateBack(), 500)}).catch((err) => {uni.showModal({content: err.message || '请求服务失败',showCancel: false})})}// 这是edit.vuesubmitForm(value) {// 使用 clientDB 提交数据return db.collection(dbCollectionName).doc(this.formDataId).update(value).then((res) => {uni.showToast({title: '修改成功'})this.getOpenerEventChannel().emit('refreshData')setTimeout(() => uni.navigateBack(), 500)}).catch((err) => {uni.showModal({content: err.message || '请求服务失败',showCancel: false})})},// edit.vue的方法中还多了一个获取内容的方法/*** 获取表单数据* @param {Object} id*/getDetail(id) {uni.showLoading({mask: true})db.collection(dbCollectionName).doc(id).field("parent_id,key,name,icon,description,remark,sort,is_hot_show,is_display,status,is_deleted").get().then((res) => {const data = res.result.data[0]if (data) {this.formData = data}}).catch((err) => {uni.showModal({content: err.message || '请求服务失败',showCancel: false})}).finally(() => {uni.hideLoading()})}...
}
</script>

代码合并

好了,有了如上的分析,那修改就再简单不过了:直接在edit.vue上修改。

  • 其它地方都不需要改动。
  • submitForm(value)方法里,判断一下id是否存在。
    • 如果不存在则为新增,把add.vue中该方法下的内容复制来即可;
    • 如果为修改,那就是原来代码;
  • 最后在list.vue上修改一下新增按钮的链接就行。
// 只需要把add.vue的submitForm中的内容复制到edit.vue来就行了/*** 提交表单*/
submitForm(value) {// 判断一下formDataId不为空就是修改,为空就是新增// 使用 clientDB 提交数据if(this.formDataId && this.formDataId !== ''){return db.collection(dbCollectionName).doc(this.formDataId).update(value).then((res) => {uni.showToast({title: '修改成功'})this.getOpenerEventChannel().emit('refreshData')setTimeout(() => uni.navigateBack(), 500)}).catch((err) => {uni.showModal({content: err.message || '请求服务失败',showCancel: false})})}else{return db.collection(dbCollectionName).add(value).then((res) => {uni.showToast({title: '新增成功'})this.getOpenerEventChannel().emit('refreshData')setTimeout(() => uni.navigateBack(), 500)}).catch((err) => {uni.showModal({content: err.message || '请求服务失败',showCancel: false})})}
},

list.vue页面上找到新增,把add.vue改成edit.vue就ok啦

// 把原来的add改为edit
<button class="uni-button" type="default" size="mini" @click="navigateTo('./edit)">新增</button>

测试成功,完美。

当然,我自己做的系统,权限系统是在页面里面进行判断是否授权,而现在是根据路由来,那该add.vue还是add.vue吧,不多想了

在这里插入图片描述

这篇关于uni-app开发日志:将schema2code生成的新增页和修改页整合成一页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114007

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与