0

我正在尝试在 Sencha Architect 中使用 XML TreeStore,但它无法从给定的 XML 加载任何数据。虽然我可以将该存储作为对象访问,但它的getCount()返回“未定义”和getNodeById('foobar')导致“无法读取未定义的属性“foobar”之类的方法让我认为映射没有发生(存储已初始化但无法解析数据/ 实例化模型)。

具有相同模型但通过相同基本设置中的平面存储访问的相同 XML 工作正常(例如getCount(),按预期返回 2)。具有 JSON 数据版本的树存储也可以正常工作。

Sencha Architect 为我的问题商店开设的课程是:

Ext.define('MyApp.store.DocumentStore', {
    extend: 'Ext.data.TreeStore',

    requires: [
        'MyApp.model.Document'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            autoLoad: true,
            storeId: 'TreeDocumentStore',
            model: 'MyApp.model.Document',
            proxy: {
                type: 'ajax',
                url: 'DocumentTemplates.xml',
                reader: {
                    type: 'xml',
                    root: 'Templates',
                    record: 'Template'
                }
            }
        }, cfg)]);
    }
});

源 XML 文件存储指的是:

<?xml version="1.0" encoding="UTF-8"?>
<Templates>
  <Template>
    <Id>A253338C-CDFA-4182-9E1C-652EAAB713F8</Id>
    <Title>Template 1</Title>
    <Children />
  </Template>
  <Template>
    <Id>26D5B83C-7E9E-49E2-B174-F9A6C7BA07A8</Id>
    <Title>Template 2</Title>
    <Children />
  </Template>
</Templates>

万一我误解了“root”属性的目的,我尝试了不同的节点名称作为全局根,并假设子节点根将读取器的“root”属性设置为所有可能的值,但没有运气。

我也尝试从节点中删除空,效果相同。

这不是关于在视图中显示商店中的项目,我只是试图访问控制器中的数据。

带有 XML 文件、树存储和访问该存储的控制器的 PS 虚拟项目在onLaunch这里:http ://sdrv.ms/RAsj26

4

1 回答 1

0

在这个问题上花了一些时间后,我自己对类似问题的回答可能是相关的:https ://stackoverflow.com/a/12886943/454266

当前版本的框架似乎不支持 XML 源的树结构,无论是 TreeStore 还是关联机制。

于 2012-10-15T20:45:28.280 回答