コンポーネントを初期化するときに関数内で項目を作成しようとしています。初期化関数内でオブジェクトの項目を定義する
は、次のことを考えてみましょう:
Ext.define('mobi.form.Login',{
extend:'Ext.form.Panel',
config:{
items: [{
xtype: 'textfield',
name: 'Name',
label: 'Name'
}]
});
Ext.application({
viewport: {
layout:'fit'
},
launch: function(){
Ext.Viewport.add(Ext.create('mobi.form.Login'));
}
})
私はmobi.form.login
がinitialize
(またはものは何でも私が終わっ私が指定した設定を記述するために使用することができます)上で動作する関数からその設定を生成するために取得しようとしています。
constructor
を持っており、
initialize
機能が、それらの両方が
arguments=[]
(例えば空の配列)を持っているように見える
知っ
ExtJSの4.xの:
Ext.define('mobi.form.Login',{
extend:'Ext.form.Panel',
initComponent:function(config){
config=Ext.apply({}.config,{});//make sure config exists
config.items= [{
xtype: 'textfield',
name: 'Name',
label: 'Name'
}]
Ext.apply(this, config);
this.callParent(arguments);
}
});
本当にこれを実行したかったら、あなたは 'コンストラクタ'でそれを行います。これはExt.create()に渡す設定を 'initComponent'にリンクするだけなので、上で使用しているのとまったく同じコードを使うことができます。しかし、問題は、なぜあなたはこれをしたいと思いますか? configシステムを2.xでできるだけ柔軟にしたいので、 'config'ブロックを導入しました。これでinitComponentは必要なくなりました。どのような状況で 'config'を使用することはできませんか? – rdougan
コンストラクタには引数がありませんが、それは奇妙ですか? Ext.define内のconfigは 'this'をパネルのスコープとして参照することはできません。つまり、フォーム上でthis.reset()を実行するだけのコントローラを定義する必要があります。 Mitchell Simoensには、彼のグリッド拡張でやろうとしていることに似たものがあります(私は思っています)。 https://github.com/mitchellsimoens/Ext。ux.touch.grid/blob/master/Ext.ux.touch.grid/View.jsしかし、彼がやっていることのどれもドキュメントで見つけることができません(私が盲目でない限り)。 – Alex
私の頭の上からもう1つの例は、ajax呼び出しを行うフォームを定義して、init(フォームのために楽しい)でその設定を取得することです。 – Alex