0

ツリーストアをロードし、ルート ノードを取得してから、子を反復処理しようとしています。私が観察したところ、ツリーがストアにロードされているように思えます。ルートを取得できます。コンソールでルートを展開すると、子が表示されますが、子にアクセスしようとするとExtJS エラーが発生します。

どんな助けでも大歓迎です。事前にどうもありがとうございました。

    var ts = this.getStore('QaireTreeStore');

    console.log("--- ts:");
    console.log(ts);

    var p = ts.getProxy();

    console.log("--- p:");
    console.log(p);

    p.extraParams = {};

    p.setExtraParam('prgmCode','arg1');
    p.setExtraParam('qaireCode','arg2');

    ts.removeAll();
    ts.load();

    var rn = ts.getRootNode();

    console.log("--- rn:");
    console.log(rn);


    console.log("--- isRoot");
    console.log(rn.isRoot());

    rn.eachChild(関数(n) {
        console.log('-- n:');
        console.log(n);
    });

    console.log("--- firstChild:");
    console.log(rn.firstChild);


    console.log("--- childNodes:");
    console.log(rn.childNodes);

    console.log("--- getChildAt 0:");
    console.log(rn.getChildAt(0));

「--- rn:」の下に「childNodes」と「constructor」を展開して、データが存在することを示しました。出力は次のようになります。

--- ts: SrvyController.js:71
    コンストラクタ {autoLoad: false、モデル: 関数、storeId: "QaireTreeStore"、プロキシ: コンストラクタ、フィールド: 配列[1]…}
     SrvyController.js:72
    --- p: SrvyController.js:76
    コンストラクター {タイプ: "ajax"、api: オブジェクト、リーダー: コンストラクター、モデル: 関数、hasListeners: HasListeners…}
     SrvyController.js:77
    --- rn: SrvyController.js:89
    コンストラクタ {phantom: false, internalId: "ext-record-1", raw: オブジェクト, data: オブジェクト, modified: オブジェクト…}
    childNodes: 配列[1]
    0: コンストラクター
    childNodes: 配列[9]
    データ: オブジェクト
    汚い: 偽
    編集:偽
    イベント: オブジェクト
    firstChild: コンストラクター
    hasListeners: HasListeners
    id: "IHA.model.QaireModel-48"
    内部 ID: 48
    lastChild: コンストラクター
    変更: オブジェクト
    次の兄弟: null
    parentNode: コンストラクター
    ファントム: false
    前の兄弟: null
    raw: オブジェクト
    店: 配列[0]
    proto : テンプレートクラス
    長さ: 1
    プロト: 配列[0]
    データ: オブジェクト
    汚い: 偽
    編集:偽
    イベント: オブジェクト
    firstChild: コンストラクター
    hasListeners: HasListeners
    id: "IHA.model.QaireModel-ext-record-1"
    internalId: "ext-record-1"
    lastChild: コンストラクター
    変更: オブジェクト
    次の兄弟: null
    親ノード: null
    ファントム: false
    前の兄弟: null
    raw: オブジェクト
    店: 配列[0]
    proto : テンプレートクラス
     SrvyController.js:90
    --- isRoot SrvyController.js:93
    true SrvyController.js:94
    --- firstChild: SrvyController.js:101
    null SrvyController.js:102
    --- childNodes: SrvyController.js:105
    [] SrvyController.js:106
    --- getChildAt 0: SrvyController.js:108
    未定義

4

1 に答える 1

0

これで問題が解決するかどうかはわかりませんが、AJAX プロキシを使用しているため、ストアのリスナーで処理を行う必要があります。

ts.on('load', function(store, records) {
   var rn = ts.getRootNode();
   //do your processing here
});
于 2013-05-26T16:38:27.013 に答える