0

には2つのボタンがありますExt.WIndow。ボタン1をクリックすると、次のコードが実行されます。

ボタン2をクリックすると、コードの2番目のセットが実行されます。これらのボタンは両方ともからロードされますStore

問題;

最初のボタンをクリックすると、次のconsole.logステートメントが出力されます(これは私が期待した方法です)

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

この後、2番目のボタンをクリックすると、間違った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'));
}
4

1 に答える 1

1

あなたの問題の大部分は、あなたがloadイベントに何度かサブスクライブしているためだと思います. 基本的に、Button2 コードを実行すると、ストアにはload偶数用の 2 つのハンドラーがあり、両方が実行されます。

通常、オプションloadを追加するイベントをサブスクライブする{ single: true }と、ハンドラーが一度呼び出され、ストアから削除されます。

store.on('load', 
   function() {...},  
   scope /* this or something like it... */,
   { single: true }
);
于 2012-08-01T12:05:20.497 に答える