ExtJS 4 使用模型代理提交表单

Posted

技术标签:

【中文标题】ExtJS 4 使用模型代理提交表单【英文标题】:ExtJS 4 Submit form using model proxy 【发布时间】:2011-11-19 23:35:25 【问题描述】:

是否可以使用模型/商店的代理提交 extjs 4 表单。我想出于远程验证的原因使用提交操作。我想使用模型中的其余代理配置,这样我就可以避免两次配置数据库/服务器连接。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果您的表单完全代表您的模型的一个实例,为什么您使用表单提交而不是model.save();store.sync()?这些方法专为处理您的数据模型而设计,并利用 ExtJS 数据的所有出色内置功能。

在 documentation for Ext.data.Model 的“使用代理”子标题下,有一些您可能想要执行的各种操作的示例(GET、PUT、POST、DELETE - 也就是加载、保存、保存、销毁)。

然后,您可以将一些回调附加到 model.save() 方法,以便知道操作是成功还是失败(可能是由于服务器端验证)。

这里有一篇 Sencha 论坛帖子讨论您的具体用例:ExtJS 4 Sync and success/failure processing

总结是,如果您的服务器端验证返回 JSON 内容错误,例如:

 "success": "false", "message": "Error message goes here." 

然后您可以保存模型并捕获失败响应,并使用额外的消息 JSON 元素来提醒用户为什么它未能通过服务器端验证。当然,如果您愿意,您可以返回更详细的 JSON 消息,但这证明了这个概念。扩展以适应您的应用程序。

myExtModelInstance.save(
    success: function(rec, op) 
        // do something
    ,
    failure: function(rec, op) 
        // Lets show a message for the failure with the 
        // content from the server's returned failure JSON
        Ext.Msg.alert("Failed",op.request.scope.reader.jsonData["message"]);
    
);

【讨论】:

以上是关于ExtJS 4 使用模型代理提交表单的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4.2.1 - 表单自定义字段验证

ExtJS+django表单提交成功/失败问题

动态创建 ExtJS 表单以进行页面重定向

Extjs4 表单提交传递JSON格式到后台

ExtJs,提交表单时未调用自定义TextField的getValue()函数

Extjs4.1 - 在隐藏字段中提交有效表单允许空白为假