2017-09-26 9 views
0

を使用してXTYPEを取得:ExtJSに - 私はXTYPEを定義したカスタム設定

Ext.define('Sample.view.CustomTextfield', { 
    extend: 'Ext.field.Text', 
    customConfig: 'foo' 
    . . . . 
}); 

customConfigを使用してコンポーネントを作成するための方法がある場合は、私が今したいです。

そうするのExtJSがありmyPanel.add(Ext.getComponentByConfig('customConfig', 'foo'));

のようなものをやって?

注:

カスタムコンポーネントがまだ表示されませんが、答えはComponentQueryを使用してのようなので、すでに(など、.down().up() ...)に定義されて間違っています。

EDIT:私は何をする必要があるか、今

var myArray = [ 
    { config: 'customConfig', value: 'foo' }, 
    { config: 'anotherCustomConfig', value: 'bar' }, 
    . . . . 
] 

:あなたがオブジェクトのキーと値のペアの配列を持っている

たぶん:ここ

は、サンプルのユースケースです配列をループしてに等しい値を持つ設定を持つxtypeを取得するために使用するconfigプロパティを取得します。つまり、コンフィグ値はfooである。要するに、config->valueオブジェクトの配列を使用して、ビューを動的にレンダリングする必要があります。

+0

あなたの質問は本当に意味をなさない。 –

+0

@EvanTrimboli、編集 –

+0

を参照してくださいまだ理にかなっていません。 –

答えて

1

、同様にこのコンポーネントを追加し、ここにあります。私はこれが正しい方法であるかどうかはわかりませんが、とにかくこれを共有します。これを改善すること自由に感じなさい:この関数は、Ext.createByExt.ClassManagerによって保持され、クラスがパラメータで供給されconfigと価値を持っているかどうかを確認されているクラスを反復されない何

Ext.createBy = function (config, value) { 
    var classes = Ext.ClassManager.classes; 
    for (var cls in classes) { 
     if (classes.hasOwnProperty(cls)) { 
      var c = classes[cls]; 
      if ((c[config] && c[config] === value) || (c.prototype && c.prototype[config] && c.prototype[config] === value)) { 
       return Ext.create(classes[cls].getName()); 
      } 
     } 
    } 
} 

。その後、それはExt.createを使ってテストに合格しました。

これは、このように使用することができます。これは、動的config->valueに応じmyPanelにアイテムを追加します

var myArray = [ 
    { config: 'customConfig', value: 'foo' }, 
    { config: 'anotherCustomConfig', value: 'bar' }, 
    . . . . 
]; 

for (var i = 0, l = myArray.length; i < l; i++) { 
    var obj = myArray[i]; 
    myPanel.add(Ext.createBy(obj.config, obj.value); 
} 

myPanel.add(Ext.createBy('someConfig', 'someValue'));

か、私のサンプルユースケースを関係します。

0

カスタムコンポーネントをパネルに追加する場合は、Ext.defineでaliasプロパティを使用し、ウィジェット名を使用して追加することができます。 myPanelで

Ext.define('Sample.view.CustomTextfield', { 
    extend: 'Ext.field.Text', 
    alias: 'widget.foo' 
    . . . . 
}); 

、私が思いついたwhayので

myPanel.add({ xtype :'foo',}); 
+0

私はすでに知っているが、私が必要とするものは、あなたが使用しているextjsバージョンの 'customConfig' –

+0

だけを使用してコンポーネントをインスタンス化することでしょうか? – AswathyPrasad

+0

私の投稿は「extjs4.2」とタグ付けされています。 –

関連する問題