2012-07-09 34 views
0

例如我有5條記錄。我應該問用戶確認下一步操作,Ext.Msg.confirm收集數據的順序

 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 

回答

1

ExtJS的消息框是asycronous,所以你的代碼中加入該產品是正確的,但要收取一部分是錯誤的。該部分在您確認之前執行。所以,你應該添加的功能在哪裏,也許收集數據,並從在MessageBox確認的回調方法調用它:

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 
} 
+0

如果我有,每次一塊錢我見過這種類型的問題... – 2012-07-09 09:16:33

+0

是的,store.load()是最常見的:) – nscrob 2012-07-09 10:14:42

+0

我知道它工作異步。問題是,如果有4條記錄和4條確認,這個collectData將被調用4次。但我需要一種方法來確定過程已完成並收集數據。 – user1469210 2012-07-10 06:49:48