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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(