ExtJS開発メモ -7ページ目

ExtJS開発メモ

ExtJSでの困りごと等、忘備録。

ExtJS4.0 -> 4.1 になって、BasicForm.getValuesメソッドから入れ子Form内のフィールドが取得されるように変わった。




明細データ入力用テンプレやら、複合カスタムコントロールやらを作ったとき、中身のフィールドが全部取れてしまう。困った。




ソースを読むと、Ext.ComponentQueryで取ってきている。




ExtJS4.1.1 - src/form/Basic.js:350行目

getFields: function() {
var fields = this._fields;
if (!fields) {
fields = this._fields = new Ext.util.MixedCollection();
fields.addAll(this.owner.query('[isFormField]'));
}
return fields;
},




このExt.ComponentQuery、「XXを除外する」みたいな記述方法が分からない。うむむ。




しゃあなし、別途取得した除外フィールドを対象から外すようにする。





fields = new Ext.util.MixedCollection();
fields.addAll(this.owner.query('[isFormField]'));
excFields = new Ext.util.MixedCollection();
excFields.addAll(this.owner.query('form [isFormField]'));

for(i in excFields.items){
fields.remove(excFields.items[i]);
}



うーん、かっこ悪い。


ComponentQueryをもうちょっと勉強しよう。