将ExtJS数据保存到服务器的最标准功能是什么



似乎有几种方法可以使用ExtJS功能与MVC存储交互并保存数据(将数据发送到服务器端堆栈)。我发现Sencha支持几种标准方法(从我目前所读到的内容来看),但我正在努力为我的应用程序的不同部分选择最好的方法。我使用Ext Direct作为服务器端堆栈,但我不确定这是否有什么不同。我意识到,有些方法将数据作为"脏"添加到存储中,有些方法则将数据发送到服务器。如果我犯了错误,请更正下面的任何描述如果你至少能让我朝着正确的方向前进(对于我的3个用例),这样我就不会在需要升级到ExtJS 5.x时浪费很多时间来修复自定义代码,那将是非常感谢的

  1. {form}.submit()-这会向服务器发送JSON请求,通常用于具有单一数据级别的表单(意味着没有嵌套的数据结构)
  2. {store}.save()-似乎将数据保存到服务器
  3. {store}.sync()-似乎向给定存储的服务器发送脏记录
  4. {store}.autoSync-用于自动调用{store}.sync()的配置
  5. {record}.updateRecord()-向服务器发送更新的记录
  6. {store}.commit({record})-似乎在更新存储中的记录,而实际上没有向服务器发送任何内容
  7. {store}.add()-似乎只用于向存储添加脏记录,而不实际向服务器发送任何内容
  8. {model}.save()-似乎以与{store}.save()类似的方式保存数据,但似乎在使用模型关联来构建MVC模型之间的引用完整性时使用
  9. 使用标准{proxy}.writer
  10. 扩展{proxy}.writer
  11. 覆盖{proxy}.write()事件侦听器

我是否遗漏了任何内容(除了Sencha支持的各种代理)

请求:

(1)我希望能够将记录保存在具有深度为1的字段的表单中(意味着没有嵌套的数据结构)。因此,表单包含我的实体,具有属性和值。

(2)我希望能够将记录保存在具有嵌套组件(表单)的组件(窗体)中。每个组件都可以具有属性/值对以及网格。

(3)我希望能够保存对树组件存储数据的更改。我了解模型关联(用于阅读)。在脏树中保存数据的最佳方法是什么?将整个树发送到服务器似乎需要做很多工作,因为在读取过程中,我一次只检索一个级别以添加到我的存储中。

这很巧妙,但在我了解基本知识之前,我不想变得太复杂。http://moduscreate.com/expert-ext-js-model-integration-in-forms/

早些时候,我曾在不同的商店工作,每个商店都有CRUD。但这种复杂的数据同步操作是因为它将同步过程分为单独的操作,所以您无法同时将数据与嵌套项同步。

我认为代理人的作者是提供你所说内容的最佳方式。通过自定义它,您可以发送简单的数据或一些复杂的结构。在我的实践中,我使用这样的方法。下面是作者使用子数据的示例。

writer: {
type: "json",
getRecordData: function (record, operation) {
var data = record.getData();
var s = [];
record.subdivisions().each(function(subdivision) {
var d = subdivision.getData();
d.organizationId = data.id;
s.push(d);
});
data.subdivisions = s;
return data;
}
},

您可以通过extAjax发送请求。假设你有成功的响应,你可以通知用户你所做的更改,如果需要,你只需在成功后重新加载你的商店。我认为这可能会对某人有所帮助。

最新更新