3

ほとんどの場合、同じボタンを複数回クリックすると (同じ関数を 2 回以上呼び出すと)、次の警告が表示されます。

[WARN] [WARN][Ext.Component#constructor] Registering a component with a id (`name`) which has already been used. Please ensure the existing component has been destroyed (`Ext.Component#destroy()`.

destroy警告が示唆するように、どのようにすればよいですか? またはどうすればこれを修正できますか?

アップデート

function onPersonFound(imageData) {
           var image = Ext.create('Ext.Img', {
                                 src: "data:image/jpeg;base64," + imageData,
                                 id: 'logo',
                                 width: 372,
                                 height: 140
                                 });
4

2 に答える 2

5

[WARN][Ext.Component#constructor]name既に使用されている id ( ) のコンポーネントを登録しています。既存のコンポーネントが破棄されていることを確認してください ( Ext.Component#destroy().

警告は、コンポーネントの作成と破棄がid:name速すぎることを示しています。idそのため、そのコンポーネントのハードコードされたプロパティを削除し、代わりに を使用することをお勧めしますitemId

itemIdoverをid使用する理由

オブジェクト参照が利用できない場合、コンポーネントへの参照を取得する別の方法として itemId を使用できます。Ext.getCmp で ID を使用する代わりに、itemId または ID を取得する Ext.Container.getComponent で itemId を使用します。itemId はコンテナーの内部 MixedCollection へのインデックスであるため、itemId はコンテナーに対してローカルにスコープされ、一意の ID を必要とする Ext.ComponentManager との潜在的な競合を回避します。

于 2012-05-16T18:01:24.487 に答える
0

コントローラー関数によると、これは、ボタンを初めてクリックしたときに、Sencha Touch が wi​​th Ext.Imageidを作成するためlogoです。2 回目は id を持つ別のイメージlogoが作成されるため、同じ .id を持つ 2 つのコンポーネントがありますid。プロパティに基づいている場合、間違ったクエリ結果につながりidます。

コンポーネントを作成するときは、構成でより「具体的」にして、いつでもid同じコンポーネントがないようにします。id例えば:

function onPersonFound(imageData) {
           var image = Ext.create('Ext.Img', {
                                 src: "data:image/jpeg;base64," + imageData,
                                 id: 'logo' + person_id,
                                 width: 372,
                                 height: 140
                                 });

注:同じ. person_id_ お役に立てば幸いです。id

于 2012-05-17T02:24:34.970 に答える