2011-07-27 8 views
0

OK同じマネージャを使用して、いくつかの理由であり、ここでは、コードの小さなスニペット(ExtJSの4)があります.form.CheckboxGroup。それにもかかわらず、検査は、作成されたアイテムが同じマネージャを使用していることを示します。それは意図的なのですか?どうすればそのような行動を取り除くことができますか?私は(一つの形態は、他に影響を与える上でloadRecords)「異なる」チェックボックスのグループが相互に影響を与えないがしたいのでアイテムが

+0

何ExtJSのバージョン

は(彼らは同じ名前を持っている場合は、グループAとグループBの「smthng」で本当に「smthng」の区別はありませんので、これはまた、設計の観点から理にかなっています) ? –

+0

@Xupypr MV - ExtJs4 – shabunc

+0

Ext.form.CheckboxManagerは、名前でグループ化されたすべてのExt.form.field.Checkboxフィールドを管理するプライベートユーティリティクラスです。 (ExtJS 4.0.1ドキュメントから)。 –

答えて

2

これは意図的です。 CheckboxManagerはシングルトンであり、いくつかのラッパー関数を持つ "あなたのDOM内のすべてのチェックボックスのコレクション"です。

希望するものを達成するには(あるグループのアクティビティが他のグループに影響を及ぼすことはありません)、チェックボックス名前属性は、さまざまなチェックボックスグループ間で区別されます。

つまり、グループAにチェックボックス「smthng」がある場合、グループBは「smthng else」を持つことができますが、「smthng」はできません。あなたが使用している

+0

悲しいことに、実際には:(これは非常に自然な状況です。入力のグループが同じ名前のフォームでいくつかの異なるウィンドウを提供することです。extjsがフォームをスコープのように扱うことは非常に論理的です。 – shabunc

1

はこれを試してみてください:

var a = new TestA().createCheckboxes().items.get(0); 
    var b = new TestA().createCheckboxes().items.get(0); 
    console.log(a, b, a === b); 

    var c = new TestA().createCheckboxes().items.length; 
    var d = new TestA().createCheckboxes().items.length; 
    console.log(c, d); 

Ext.form.CheckboxManagerがすべてを管理するための民間のユーティリティクラスがあるのでExt.form.field.Checkboxフィールドは名前でグループ化されています。 (ExtJS 4.0.1ドキュメントから)、私はあなたが考えている問題はないと思います。

+0

申し訳ありませんが、私はあなたが質問を正しく受けていないと信じています。問題は、共有することが何もないはずの、別々に作成されたインスタンスが実際に共通のマネージャーを共有している理由です。それはちょっと迷惑で、直観に反し、さらに動的なフォームの作成を難しくします。 – shabunc

関連する問題