Javascript 树的ExtJS数据存储

Javascript 树的ExtJS数据存储,javascript,extjs,Javascript,Extjs,我有一个基本的ExtJS问题,通过阅读文档和搜索,我似乎无法解决这个问题。目前我有一个直接从URL加载JSON的树面板。我试图将数据从视图中分离出来,这样我也可以使用该数据将数据输入到OpenLayers地图(使用GeoExt)。如何将TreePanel指向Ext.data.Store而不是URL?TreePanel使用TreeLoader而不是Stores来加载数据。原因是树需要层次结构数据,而存储是平面表结构,不支持层次结构。基本数据对象也不同(记录与节点)。当然,您可以使用父/子键将自己的

我有一个基本的ExtJS问题,通过阅读文档和搜索,我似乎无法解决这个问题。目前我有一个直接从URL加载JSON的树面板。我试图将数据从视图中分离出来,这样我也可以使用该数据将数据输入到OpenLayers地图(使用GeoExt)。如何将TreePanel指向Ext.data.Store而不是URL?

TreePanel使用TreeLoader而不是Stores来加载数据。原因是树需要层次结构数据,而存储是平面表结构,不支持层次结构。基本数据对象也不同(记录与节点)。当然,您可以使用父/子键将自己的分层数据存储在存储中,但目前还没有类似的内置Ext组件。如果您试图缓存树数据,您可能必须为此推出自己的解决方案


编辑:现在分机4已退出,此答案仅适用于分机3。Ext 4现在有一个(大部分)统一的数据模型,树使用一个TreeStore(模型上应用了一个附加的节点接口),不再有单独的TreeLoader类。

树面板
配置中,只需指向数据url即可

  loader: new Ext.tree.TreeLoader({
    url: '/path/to/data.json',
    requestMethod: 'GET',
    preloadChildren: true
  })

如果你需要一个
存储
来存储这些数据,正如bmoeskau所指出的,这可能会变得很棘手,因为数据格式可能会不同。

在我们的应用程序中,我们使用了树面板和数据视图的组合,两者都在请求数据(使用传统树加载器的树)和使用存储的数据视图。两者都提交到相同的url,是的,有两个调用,但返回的结果由视图参数(tree或dataview)正确格式化,结果相同,只是修饰不同

最好有一个电话,即中央数据,但这似乎可以接受


编写一些函数来抽象(记录到节点)的解析,最后您将获得访问这两个函数的数据的一般方法

随着TreeGrid组件的添加,ExtJS3.1中的情况似乎正在发生变化:警告:这个问题和答案已经过时(4年前)。我希望能有一种方法来存档这些……这对很多人来说绝对是一个痛点。ext4.0路线图包括“关系”存储,因此我们希望最终解决这个问题。