我正在尝试找到最佳解决方案的问题涉及主表(例如订单)和详细信息表(订单行)的标准方案。两者都在单独的表中。从服务器,我可以生成json嵌套数据和两个单独的实体。在我的客户端(ExtJS)方面,我需要使用模板显示嵌套数据,并且能够对订单和详细信息执行CRUD操作。
我有两个解决方案,我都不喜欢。我正在准备培训材料,希望为学生提供一个很好的解决方案,而不是一个充满危险的人。以下是我提出的两个。
情景1
使用associations标签创建两个模型和一个商店 (belongsTo和hasmany)。这非常适合查看数据, 然而,CRUD的CUD对我来说真是太悲惨了。也许我是 缺少一些东西,但似乎你必须实现自定义读者 并做了许多不自然的事情来使这项工作。
场景2
创建两个模型和两个商店。对细节实施过滤器 存储,以便当主表(网格)更改行选择时, 细节表(网格)被过滤。这使得创建嵌套 查看模板有点尴尬,因为你必须建立 json反对自己,但更大的问题是你必须加载 提前所有细节,并过滤每个主行上的细节 选择。或者,你可以做一个
其他ajax请求对每一行的更改都会导致客户端性能不佳。
我希望能够听到更好的解决方案或我的某个方案如何变得更好。
答案 0 :(得分:3)
在我的应用程序中的类似问题中,我将使用您的方案1.您对此有什么问题?
我遇到的唯一问题是关联数据没有被发送到model.save上的服务器。解决方法是添加Json Writer覆盖。
Ext.define('SampleApp.config.CustomJsonWriter', {
override: 'Ext.data.writer.Json',
getRecordData: function (record) {
var associatedData = record.getAssociatedData();
record.associations.each(function (item, index) {
var obj = {};
obj[item.name] = associatedData[item.name];
Ext.apply(record.data, obj);
});
return record.data;
}
});
希望Sencha将在未来的ExtJS版本中包含一个包含关联数据的标志。但是你可以看到解决方法非常简单。