ExtJS 4 でコンポーネントを取得するには、主に 2 つの方法があります。グローバル ID または相対パスです。
ID アプローチには、ビュー内の実際の位置に関係なく、任意のコンポーネントを見つけることができるという利点があります。したがって、ビューが変更されても、システムは引き続き機能します。しかし、システムがますます大きくなるにつれて、名前空間で ID を使用し、コンポーネントの複数のインスタンスに対して一意の ID を生成するメカニズムを実装する必要があります。
コンポーネント クエリで相対ナビゲーションを使用する場合、ID を気にする必要はなく、たとえば、クリックしたボタンから変更したいグリッドに移動して実行するだけです。しかし、ビューが変更されると、クエリが機能しなくなり、システムが壊れる可能性があります。
したがって、どちらのアプローチも最適ではないようです。
より良い方法はありますか?
ここで回答を読んだ後、私はこのアプローチを使用しています:
ビューでは、lid
(ローカル ID) を使用してコンポーネントを定義します。これは、兄弟であるが一意である必要がありますが、のようにグローバルに一意ではありませんid
。
これで、次のようなクエリを使用できます。
someWindowInstances[0].query( 'button[lid=myButton]' );
...
someWindowInstances[n].query( 'button[lid=myButton]' );
これにより、「myButton」をウィンドウ内のどこにでも配置できるようになり、ウィンドウ ビューが変更された場合でも見つけることができます。