2011-01-11 13 views
1

私がパネルにデータを解析して、小さな問題に直面していますが、ここに私のコードです:データが解析されるまで表示を遅らせるには?

Ext.onReady(function(){ 

var stockings = [],i=0; 
Ext.regModel('Carding', {fields: ['price'] }); 
var Detailsstore = new Ext.data.Store({ 
      model: 'Carding', 
      proxy: { 
       type: 'ajax', 
       url: 'http://192.168.1.92/testapp/websample%20backup/sample/assets/www/XMLS/xmlformatses.xml', 
       reader: { 
        type: 'xml', 
        record: 'root' 
       } 
      }, 
      listeners: { 
       single: true, 
       datachanged: function(){ 
        Detailsstore.each(function(r){ 
    stockings[i++]=r.get('price'); 
        }); 
       alert(stockings[3]);//This alert works fine 
       } 
      }  
     }); 

Detailsstore.read(); 

    alert(stockings[3]);//this alert even being placed after the Detailsstore it shows undefined . . . . . 

    var showdetails = new Ext.Panel({ 
    scroll :'vertical', 
    flex:7, 
    renderTo: 'bubbleCt', 
    baseCls: 'kiran', 
    stretchX: true, 
    html: '<span style="color:#fff; font-size:20px;"><span style="font-size:25px; font-weight: bold;">' + stockings[2] + '</span><br/><br/><span style="font-weight:bold;">Trading Action Plan :</span><br/>&bull; Buy Price: 1 <br/>&bull; Sell Price:2<br/>&bull; Stop Price 80 cents<br/>&bull; Rule: Sell 50% on double <br/>&bull; 6% Trailing Stop Loss on stock<br/><br/><span style="font-weight:bold;">Volatility Analysis:</span><br/>&bull; <br/>&bull; <br/>&bull; <br/><br/><span style="font-weight:bold;">Techincal Analysis:</span><br/>&bull; <br/>&bull; <br/>&bull; <br/><br/><span style="font-weight:bold;">Fundamental Analysis:</span><br/>&bull; <br/>&bull; <br/>&bull; <br/></span>', 
      }); 

    var detailspanel = new Ext.Panel({ 
       fullscreen: true, 
      padding:1, 
      layout: { 
         type: 'vbox', 
         pack: 'center', 
         align: 'stretch' 
        }, 
       items: [showdetails] 
      }); 
    }); 

問題は、上記の私は、コードを実行しようとウェン第一、第二の警告が行われてと表示されていることです定義されていない.........

私の目標は、データを解析してパネルに表示することです。

しかし、私はこの問題は、パネルは店が、それはパネルがすでに

表示された後、最初の警告が正常に動作し、それに値を表示するが、その操作が起こっている場合の動作 だ完了する前であっても表示されていることだと思います

助けてください

ありがとうございます。 。 。 ..

答えて

5

あなたExt.data.Storeは、サーバーへの非同期要求によってアップロードされています。 JavaScriptの実行をブロックするわけではないので、リクエストを行いますが、残りのスクリプト(アラート、パネルなど)に進む前にデータが返されるのを待つことはありません。

ストアがロードされると、イベント 'load'が発生します。あなたがこのイベントを取得すると、あなたのパネルを作りたいとき、それはだ、など

Detailsstore.on('load', function() { 
     // do everything here. 
     // var showdetails = new Ext.Panel({ ... 
     // var detailspanel = new Ext.Panel({ ... 
    }); 
    Detailsstore.read(); // <-- fire off the request for data AFTER you set up your 'load' handler 
0

あなたがパネルにデータストアまたはモデルインスタンスをバインドしたい場合は、テンプレートを使用してチェックアウトする必要があります - あなたはドンそのようにdatachangedを検出して、コンポーネントの.update()を使用するだけです。

また、ストアには、read()を明示的に実行する必要がないautoLoadフラグがあります。

関連する問題