关于新增和编辑

我想大家在开发的过程中,肯定都会遇到这样一种场景, 编辑和新增都在同一个页面, 在处理这种问题的时候, 我想很多人都会这样处理

 1 //获取参数函数
 2 function queryString(name) {
 3     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
 4     var r = window.location.search.substr(1).match(reg);
 5     if (r != null) return unescape(r[2]); return null;
 6 }
 7
 8
 9 var detail =  {
10     init: function(){
11         var _this = this;
12         var id = queryString(‘id‘) || ‘‘;
13
14         if(id && id.length > 0){
15             this.showEdit();
16         }else{
17             this.showCreate();
18         }
19
20         $(‘#button‘).click(function(){
21             if(id && id.length > 0){
22                 _this.edit();
23             }else{
24                 _this.create();
25             }
26         });
27     },
28     create: function() {
29         //处理创建
30     },
31     edit: function() {
32         //处理编辑
33     },
34     showCreate: function(){
35         //处理创建显示
36     },
37     showEdit: function(){
38         //处理编辑显示
39     }
40 };

上面的代码, 应该很容易理解, 而且很多人都是按照这种方式去处理编辑和新增的差异化需求, 这种编码方式很直接, 但是每次处理差异化需求的时候都得去进行判断, 经常这样处理会不会觉得很糟糕, 其实我也经常在纠结这块代码该如何去处理,直到前段时间有一个同事在周会上分享了点内容, 顿时感觉茅塞顿开, 就想到了这块该如何去处理, 其实可以用面向对象的思想去处理这个问题.

 1 var detail = {
 2     //设置状态,常量
 3     STATE: {
 4         CREATE: ‘create‘,
 5         EDIT: ‘edit‘
 6     },
 7     state: ‘‘, //记录当前页面的状态
 8     init: function(){
 9
10         var _this = this;
11         var id = queryString(‘id‘) || ‘‘;
12
13         this.state = id.length > 0 ? this.STATE.EDIT : this.STATE.CREATE;
14
15         $(‘#button‘).click(function(){
16             //根据状态来处理编辑和新增
17             _this[_this.state].update.call(_this);
18         });
19
20         //进行初始化
21         this[_this.state].render.call(this);
22     },
23     create: {
24         render: function(){
25             //处理创建显示
26         },
27         update: function(){
28             //处理创建
29         }
30     },
31     edit: {
32         render: function(){
33             //处理编辑显示
34         }
35         update: function(){
36             //处理编辑
37         }
38     }
39 };

看到上面这段代码, 思路是不是很清晰, 也没有那么多的if判断, 只要一个状态就可以解决之前的所有的差异化需求, 而且每个业务的需求都是独立的, 互不影响,这样即使在修改的时候也不会影响到另外一个业务, 当然缺点也很明显, 按照这种思路处理, 可能会有很多重复的代码, 不过这是不可避免的, 现实中, 没有那么完美的方案,只能说按照需求和情况 做出合适的处理和调整, 我们现在所做的一切都是为了需求和业务, 如果脱离了这些, 方案即使再完美, 哪又有何意义.

关于新增和编辑

时间: 2024-11-09 09:37:47

关于新增和编辑的相关文章

新增、编辑功能实现错误记录...

做新增和编辑的功能,$.ajax提交表单,如果id为空走新增,不为空走编辑 controller层接收参数.(Long id) 一开始的时候,js里面的逻辑是,新增和编辑按钮点击后进入不同的方法,如果是新增的话,发送ajax请求的话就传{id:0;name:name;country:country},编辑的话就传{id:id;name:name;country:country}. 后来有人优化我的js代码,采用$("#addForm").serialize()的方式(前提是引入了boo

vue+elementui 新增和编辑如何实现公用一个弹框

//html代码: //按钮 <el-button type="primary" size="medium" @click="addEquipment">新增</el-button> <el-button type="text" size="medium" @click="handelEdit(scope.$index, scope.row)">编辑&

金甲防线服务项目笔记:新增、编辑与删除

一.新增: //添加序列号 function addSerialNumber(obj){ var type = $("input[name='serialNumber']:checked").val(); showWindow($(obj).attr("title"),"genuineSerialNumberManagementAction_addUI.do?genuineSerialNumberManagement.type="+type,&q

MVC前台判断新增 查看 编辑

//当前ID var currentID = "@ViewBag.CurrentID"; //是否新增状态 var isAddNew = currentID == "" || currentID == "0"; //是否查看状态 var isView = @ViewBag.IsView; //是否编辑状态 var isEdit = !isAddNew && !isView; todo//在判断不是新增状态下(可能是查看或是编辑)加

新增和编辑clob字段

#region 新的数据新增和修改方法 /// <summary> /// 添加信息 /// </summary> /// <returns></returns> public static bool AddInfo(string name, string pid, string content) { OracleConnection conn = new OracleConnection(connectionstring); OracleCommand c

八.1班级信息的展示及新增和编辑

主要实现班主任的功能: - 班级的管理 - 班级的展示 - 添加班级 - 编辑班级 1.班级的展示: (1)urls.py中: #展示班级列表 url(r'class_list/', views.ClassList.as_view(), name='class_list'), (2)views.py中: (3) 原文地址:https://www.cnblogs.com/dbslinux/p/12076794.html

Editable DataGrid 实现列表新增编辑功能

今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户也可以更新一个或多个行. 下面是我在项目中的实现代码: 第一步:引用 easyui.css jquery-1.8.1.min.js jquery.easyui.min.js 第二步:Html和Javascript代码 <h2>Editable DataGrid Demo</h2> &l

Jquery easyui开启行编辑_增删改操作及新增就能编辑

下面这个是一个单独的js文件,可以直接在页面引入他就可以用了 主要有三种方式实现编辑模式增删改操作 1.直接双击选中编辑 2.选中行点击修改按钮编辑 3.右键选择相关的操作 可能中间有部分功能没有实现 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 引入自定义的js文件 --> <script type="t

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都没有发现很完整的实例或非常好的解决方案,所以我很想和大家讨论一下又什么更好的解决方案. 一旦有更好的方式我会把它集成到模板中实现自动生成.所以很希望得到大家的帮助.在这里我先抛砖引玉了. Demo代码在 https://github.com/neozhu/MVC5-Scaffolder 下载 先看一