增删改查方法
CRUD 提供表单、校验和操作事件,接口请求由业务处理。所有记录应包含稳定主键(默认 id),新增时使用服务端返回的真实主键。
新增数据
效果预览可直接操作下方示例
新增提交触发 row-save(row, done, loading)。保存成功用 done(savedRow) 关闭表单并加入本地列表;示例可切换为模拟失败,失败后调用 loading() 结束提交状态并保留输入。
正在加载示例…
修改数据
效果预览可直接操作下方示例
编辑提交触发 row-update(row, index, done, loading)。done(savedRow) 按主键更新本地记录;请求失败时调用 loading(),不会关闭编辑窗口。
正在加载示例…
删除数据
效果预览可直接操作下方示例
点击删除触发 row-del(row, index, done)。确认并完成业务删除后,再调用 done() 移除本地行;不调用它时列表不会自动删除。
正在加载示例…
刷新数据
效果预览可直接操作下方示例
点击刷新触发 refresh-change,需要业务重新查询。它与 refreshTable() 不同:后者只重新挂载表格并清空选择,不请求列表。
正在加载示例…
综合用法
效果预览可直接操作下方示例
新增、修改和删除都使用组件回调同步本地数据。本例没有业务接口,操作后下方显示记录数量和最近结果;「模拟保存失败」可以验证提交结束后仍保留输入。
正在加载示例…
选择一种数据同步方式
| 场景 | 保存后处理 |
|---|---|
| 完整记录已由接口返回,希望直接更新当前列表 | done(savedRow) |
| 需要重新获取服务端分页、排序、计算字段 | done() 后重新请求当前页 |
| 保存失败,允许修改后重试 | 显示错误,再调用 loading() |
| 删除成功,直接更新当前本地列表 | done() |
不要同时手动插入一条记录又调用 done(savedRow),否则会重复新增。删除当前页最后一条记录后,业务应根据新的总数校正页码再重新加载。done 和 loading 都是事件参数,不需要保存为全局变量。
async function rowSave(row, done, loading) {
try {
const savedRow = await createRecord(row);
done(savedRow);
} catch (error) {
loading();
// 使用项目的错误提示,保留当前输入。
}
}弹窗提交前已经执行字段校验;无须在 row-save 中再次调用 validate。按钮定制见 自定义按钮,分页查询见 分页。
