2012-08-01 64 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 } 
);