0

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

4

1 に答える 1

0

この問題にしばらく時間を費やしたので、同様の質問に対する私自身の答えはおそらく関連しています: https://stackoverflow.com/a/12886943/454266

XML ソースのツリー構造は、現在のバージョンのフレームワークでは適切にサポートされていないようです。それは TreeStore であろうと関連メカニズムであろうと。

于 2012-10-15T20:45:28.280 に答える