0

たとえば、5 つのレコードがあります。ユーザーに次の操作の確認を求める必要があります。

     var data = [];
     Ext.Msg.confirm('Confirm', String.format('Are you sure about {0} record?',
                    product['id']),
                    function (btn){
                        if(btn=='yes')  data.push(product['id']);

                    }
    });

 // here I want to get collected data
console.log(data); // gives [] - empty
4

1 に答える 1

1

ExtJsのメッセージボックスは非同期なので、商品を追加するコードは正しいのですが、集めたい部分が間違っています。その部分は、確認する前に実行されます。したがって、おそらくデータを収集する関数を追加し、メッセージボックス確認のコールバックメソッドから呼び出す必要があります。

var data = [];
function confirm(id){
     Ext.Msg.confirm('Confirm', String.format('Are you sure about {0} record?',
                    product['id']),
                    function (btn){
                        if(btn=='yes') {
                          data.push(product['id']);
                        }
                        if (id<4){ //or some terminal condition you have
                          confirm(newId) //show confirm for new id or next..
                        } else {
                          collectData(data);
                        }    
                    }
    );
}
function collectData (data){
 // here I want to get collected data
console.log(data); // gives [] - empty
}
于 2012-07-09T08:25:24.213 に答える