如何使用生成具有多个数据存储的树?

时间:2015-06-22 12:48:27

标签: javascript extjs

我有几个型号:

ModelA:
fields: [id, name],
hasMany: ModelB

ModelB:
fields: [id, name, attr],
hasMany: ModelC

ModelC:
fields: [id, name, attr]

我使用数据存储来存储来自rest代理的这些嵌套数据:

ModelAStore:
model: 'ModelA'
proxy:{}

现在我想在树状图中使用它们:

结构将如下:

ModelA
|-ModelBInstance
  |-ModelCInstance
  |-ModelCInstance
|-ModelBInstance
|-ModelBInstance

当我点击ModelBInstance时,其他部分的数据网格将会改变。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

基本上你要么

  • 使用typeProperty: 'mtype'配置代理阅读器并获取其余API,以便在该字段中添加'A''B''C';

OR

  • 使用属性childType属性定义您的模型:A(商店模型)将childType: 'B'BchildType: 'C'

全部在最新的Tree Panel手册中 - 滚动到“异构节点类型”。

答案 1 :(得分:0)

为什么使用3种不同型号?对我来说更好的解决方案是只使用一个模型,可能还有一个额外的字段来保存您的内容类型:

Model:
fields: [id, name, attr, type]

根据文档http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.tree.Panel,您使用的商店必须实现一个根域('孩子','数据',...),这将指示当前节点有子节点。 所以你的模型看起来像这样:

Model:
fields: [id, name, attr, type, children]

现在,如果您决定使用此解决方案,您可能需要重构生成数据的方式......