我正在尝试在 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