是否可以使用模型/商店的代理提交 extjs 4 表单。我想出于远程验证的原因使用提交操作。我想使用模型中的其余代理配置,这样我就可以避免两次配置数据库/服务器连接。
谢谢你的帮助!
如果您的表单完全代表您的模型的一个实例,那么您为什么使用表单提交而不使用model.save();
or store.sync()
?这些方法是为处理您的数据模型而设计的,并利用了 ExtJS 数据的所有内置功能。
在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"]);
}
});