ExtJS优化系列二之表单提交通用实现方案详解与代码实现
将表单提交通用逻辑封装为$postForm函数,仅13行代码即可覆盖校验、提交、成功 失败回调及等待提示等场景,避免控制器中重复编写。通过传入配置对象调用,支持作用域控制与统一回调处理,减少代码冗余,便于全局扩展如防重复提交等功能。
在ExtJS项目开发中,表单提交是最高频的操作之一。如果每次都在控制器里手写提交逻辑,不仅代码冗余,还容易出错。一个比较务实的做法是把提交逻辑封装成通用函数,需要时直接调用。下面这个 $postForm 函数就是干这事的——别看它只有十几行,但覆盖了校验、提交、成功/失败回调、等待提示等常用场景。
复制代码 代码如下:
/**
* 提交表单
*/
function $postForm(a) {
if (a.formPanel.getForm().isValid()) {
var b = a.scope ? a.scope: this;
a.formPanel.getForm().submit({
scope: b,
url: a.url,
method: "post",
params: a.params,
waitMsg: "正在提交数据...",
success: function(c, d) {
Ext.ux.Toast.msg("操作信息", "成功信息保存!");
if (a.callback) {
a.callback.call(b, c, d);
}
},
failure: function(c, d) {
Ext.MessageBox.show({
title: "操作信息",
msg: "信息保存出错,请联系管理员!",
buttons: Ext.MessageBox.OK,
icon: "ext-mb-error"
});
if (a.callback) {
a.callback.call(b);
}
}
});
}
}
对比原始写法(25~30行),这段封装代码只有13行,却能处理大部分表单提交流程。核心思路很简单:传入一个配置对象 a,包含表单面板、URL、参数、作用域和回调函数。内部先做有效性校验,然后调用 submit 方法,成功时弹出 Toast 提示并执行回调,失败时弹出错误对话框并仍然执行回调(可用于界面回退等操作)。
下面是在实际业务中的调用示例——保存一条学生部门记录,提交完成后自动刷新列表并关闭窗口:
复制代码 代码如下:
sa veRecord: function() {
$postForm({
formPanel:this.formPanel,
scope:this,
url: __ctxPath + "/basedata/sa veStudentDepartment.action",
params:{},
callback: function(d, f) {
var e = Ext.getCmp("StudentDepartmentGrid");
if (e != null) {
e.getStore().reload();
}
b.close();
}
});
}
这样一封装,每个业务模块的提交逻辑就变得非常清爽。需要关注的点:scope 参数用于控制回调中的 this 指向,避免上下文混乱;callback 同时支持成功和失败两个分支,方便做统一的后续处理。如果后续想增加全局的提交前验证、防重复提交、日志记录等,直接在这个函数里加即可,一处改动全局生效。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
如何用拖放在Flask看板应用中更新数据库状态
在Flask看板应用中,通过HTML5拖放API结合前端fetch异步POST请求,将拖拽任务的task_id和target_state发送至后端路由;后端接收JSON后更新数据库并提交事务,实现跨列拖拽时实时更新状态。需注意将事件绑定到容器而非子元素,并在ondragover中阻止默认行为以确保drop触发。
如何用CSS :has()选择器快速实现悬停span显示相邻div
利用CSS的:has()伪类选择器,通过` bar:has(> baz:hover)+ qux`实现悬停内联元素时显示相邻块级容器,解决了传统相邻兄弟选择器无法跨层级匹配的局限,可用于悬停图标显示详情框等交互场景。需注意浏览器兼容性和性能优化,避免过度使用影响渲染效率。
display:block居中段落文本的响应式实现方法
通过`display:block`与`max-width`限制宽度,配合`margin:auto`使段落块水平居中并实现响应式布局;同时用CSS统一控制段落间距,避免脱离文档流,提升可读性与维护性。
JavaScript代码去重:高效避免重复编写的技巧
将重复代码中的变化点提取为参数,利用ES6模板字符串动态生成选择器,可消除重复、保持一致性。注意参数安全性,必要时进行白名单校验;批量化场景可扩展为数组形式;现代框架中更推荐数据驱动或组件化封装替代手动选择器。
使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度
利用CSS容器查询单位cqw,表单输入框宽度可直接基于祖父容器计算,绕过中间包装器尺寸干扰,实现简洁响应式布局,无需硬编码或JavaScript,显著降低维护成本,提升嵌套结构下的布局灵活性。
- 热门数据榜
相关攻略
2026-07-09 07:01
2026-07-09 07:01
2026-07-09 07:01
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

