Sencha Architect で XML TreeStore を使用しようとしていますが、指定された XML からデータをロードできません。そのストアにオブジェクトとしてアクセスできますが、 「未定義」が返され、「未定義のプロパティ「foobar」を読み取れません」という結果になるgetCount()
ようなメソッドは、マッピングが行われていないと考えさせます (ストアは初期化されていますが、データの解析に失敗しました) getNodeById('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>
「ルート」プロパティの目的を誤解した場合に備えて、グローバル ルートに別のノード名を試し、子ノード ルートを想定して、リーダーの「ルート」プロパティをすべての可能な値に設定しましたが、うまくいきませんでした。
ノードからも空を削除しようとしましたが、同じ効果がありました。
これはまだストアのアイテムをビューに表示することではなく、コントローラーのデータにアクセスしようとしているだけです。
XML ファイル、ツリー ストア、およびそのストアにアクセスするコントローラーを含む PS ダミー プロジェクトonLaunch
は次のとおりです: http://sdrv.ms/RAsj26