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]
             });
    });

上記の問題は、最初にコードを実行しようとすると、2番目のアラートが発生し、未定義が表示されることです........

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

しかし、問題は、ストアが操作を完了する前でもパネルが表示されていることだと思います。最初のアラートは正常に機能し、値が表示されますが、パネルが既に表示された後にその操作が行われています

助けてください

ありがとうございました 。. . ..

4

3 に答える 3

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
于 2011-01-11T08:07:37.070 に答える
0

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

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

于 2011-01-14T20:08:58.577 に答える
0

ext ストアは、データがロードされると「load」イベントを発生させます。

ロード リスナーをストアに追加し、ロード イベントが発生したらデータを表示します。

http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.Store

于 2011-01-11T08:01:22.400 に答える