baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.33k stars 2.51k forks source link

如何禁止提交initApi获取表单的数据,只提交当前表单填写的数据 #10132

Open 1532332928 opened 6 months ago

1532332928 commented 6 months ago

实现场景:

Form表单,我需要只提交当前表单填写的数据,而接口返回的数据则不需要提交,如何实现?

存在的问题:

因为表单字段不固定,会使用到service容器从后端拉取表单,会有条件限制,如果某个条件不显示某个字段时就不需要,这时问题就来了,从initApi接口获取的数据存在这个字段,而已经不需要了,在提交的时候会出现,就导致一直请求它都是存在的

1532332928 commented 6 months ago

表单提交数据配置方法很多,以下是个人建议: 1、自定义api.data配置表单数据。 2、配置api对象的requestAdaptor,对表单提交的数据进行拦截处理。 3、对于业务比较复杂的情况,建议使用多个形式表单,根据visibleOn动态的显示对应的表单,每个表单的字段根据业务类型一一对应,这种方式比较好维护。

没一个建议是直接解决的,意思就是接口返回一大堆数据,请求的时候全部跟着请求出去,现在是我需要限制,不提交接口返回的数据

findreamer commented 6 months ago

表单提交数据配置方法很多,以下是个人建议: 1、自定义api.data配置表单数据。 2、配置api对象的requestAdaptor,对表单提交的数据进行拦截处理。 3、对于业务比较复杂的情况,建议使用多个形式表单,根据visibleOn动态的显示对应的表单,每个表单的字段根据业务类型一一对应,这种方式比较好维护。

没一个建议是直接解决的,意思就是接口返回一大堆数据,请求的时候全部跟着请求出去,现在是我需要限制,不提交接口返回的数据

怀疑你没有真的实践就得出结论,总之你说没用就没用吧。

1532332928 commented 6 months ago

表单提交数据配置方法很多,以下是个人建议: 1、自定义api.data配置表单数据。 2、配置api对象的requestAdaptor,对表单提交的数据进行拦截处理。 3、对于业务比较复杂的情况,建议使用多个形式表单,根据visibleOn动态的显示对应的表单,每个表单的字段根据业务类型一一对应,这种方式比较好维护。

没一个建议是直接解决的,意思就是接口返回一大堆数据,请求的时候全部跟着请求出去,现在是我需要限制,不提交接口返回的数据

怀疑你没有真的实践就得出结论,总之你说没用就没用吧。

不不不,你应该是没了解使用场景,目前场景是,比如有10条列表数据,每条数据都有一个表单,每个字段都是不一样的,存储在数据库的字段是一样的,由于配置不一样,后端是直接存储请求过去的数据。这时如果有配置项被更新,某些字段删除了,这时就从 initApi 接口获取到的数据还是存在的,在保存的时候还是跟着,就导致变成垃圾数据了

image

2betop commented 6 months ago

把 initApi 放到上层 page 里面,也许能解决,或者 form 上再包一个 service,改成 service 的 api 来拉初始数据。这样初始化数据就变成上层数据了,表单层就只有表单项那些数据了,且同样可以正确回显

laosandegudai commented 4 months ago

把 initApi 放到上层 page 里面,也许能解决,或者 form 上再包一个 service,改成 service 的 api 来拉初始数据。这样初始化数据就变成上层数据了,表单层就只有表单项那些数据了,且同样可以正确回显

这中方式只是解决了这个需求,但是表单模型数据不知道为啥和initapi的数据模型关联上了,感觉不应该这样设计,表单数据模型应该只和表单模型有关。

17 commented 2 months ago

希望有个参数设置可以只发送表单里的数据