2012-08-01 93 views
0

Ext.WIndow上有2個按鈕。當我點擊按鈕1時,下面的代碼被執行。不正確的商店加載

當我點擊按鈕2時,第二組代碼被執行。這兩個按鈕都會從Store加載

問題;

當我點擊1號按鈕,出現如下console.log語句獲取打印(這也是我所期望的方式)

console.log ('win 1'); 
console.log('Came win 1'); 

在此之後,當我點擊第二個按鈕,我得到不正確的console.log獲取顯示。

console.log ('win 2'); 
console.log('Came win 1'); // Which is coming from the 1st Buttons Load function. 

按鈕1

 var personCus= Ext.getStore('Person'); 
     var record = personCus.getAt(0); 
    console.log ('win 1'); 
    personCus.on('load', function() { 
console.log('Came win 1'); 
     var label= Ext.ComponentQuery.query('#win1> #labido')[0]; 
     label.setText(record1.get('id')); 
} 

按鈕2

 var personCus= Ext.getStore('Person'); 
     var record = personCus.getAt(0); 
    console.log ('win 2'); 
    personCus.on('load', function() { 
console.log('Came win 3'); 
     var label= Ext.ComponentQuery.query('#win2> #labid1')[0]; 
     label.setText(record1.get('id')); 
} 

回答

1

我認爲多數您的問題很簡單,因爲你訂閱了load事件幾次。基本上,當你執行Button2代碼 - 商店將有兩個處理load,甚至他們將同時運行。

通常,當您訂閱load事件時,您希望添加{ single: true }選項,因此該處理程序將被調用一次並將從商店中刪除。

store.on('load', 
    function() {...}, 
    scope /* this or something like it... */, 
    { single: true } 
);