Extjs4 Ext js表单、模型和文件上传
我想澄清Ext4模型如何与表单面板关联。 假设我有一个模型,例如“User”,它附加了一个REST代理 当我想修改用户参数时,我使用表单的Extjs4 Ext js表单、模型和文件上传,extjs4,Extjs4,我想澄清Ext4模型如何与表单面板关联。 假设我有一个模型,例如“User”,它附加了一个REST代理 当我想修改用户参数时,我使用表单的 loadRecord( Ext.data.Model record ) : Ext.form.Basic 方法设置窗体的字段值 修改后,我调用“updateRecord”方法,将表单中的更改发送到加载的模型,然后使用模型的“save”方法将更改发送到服务器。这非常有效,似乎符合extmvc的概念 问题: 但是,问题是:如果我需要上传文件,同时修改用户数据
loadRecord( Ext.data.Model record ) : Ext.form.Basic
方法设置窗体的字段值
修改后,我调用“updateRecord”方法,将表单中的更改发送到加载的模型,然后使用模型的“save”方法将更改发送到服务器。这非常有效,似乎符合extmvc的概念
问题:
但是,问题是:如果我需要上传文件,同时修改用户数据(例如,头像),我应该如何遵守MVC。根据我从文档中学到的,我应该切换到使用表单的“提交”方法来向服务器发送更新的数据,包括文件
在这种情况下,我看到了几个缺点:
- 加载到表单中的原始模型将不会更新
- 如果我更新模型(使用“updateRecord”或其他方式),模型将保持脏状态,但是,更改已经发送到服务器
- 表单和模型应该应用相同的代理配置,这样我就不需要更改服务器端
有没有办法用model.save方法来做到这一点,让MVC更时尚?我认为你不能把这两件事结合在一起。文件上传总是与提交其余数据不同。但是,您可以做什么:
- 有一个按钮来选择并上传文件到服务器。但不要将文件保存到保存用户的同一位置(例如,可以使用单独的文件存储,只将文件名保存到用户记录中)
- 将用户记录更新发送到服务器时,请发送新文件名。这样,您的化身更新和其他数据更新将处于同一事务中