でコンテナを実装するためにどのように、我々は3つの電話番号フィールドを持っているとしましょう。ExtJSには、例えば、独自のisValidとhasInvalidField方法
電話番号フィールドは空白にすることもできますし、そうでない場合は独自の有効性チェックを行うこともできます。連絡先アイテムには少なくとも1つの番号を入力する必要があるという独自の有効性チェックがあります。
Ext.define('My.widgets.contact', {
// To make use of Ext.form.Labelable mixin
extend: 'Ext.form.fieldcontainer',
xtype: 'contact',
alias: 'widget.contact',
requires: [
'My.widgets.phone'
],
mixins: [
// To link in isValid and other methods
'Ext.form.field.Field'
],
items: [
{
xtype: 'phone',
fieldLabel: 'mobile'
},
{
xtype: 'phone',
fieldLabel: 'home'
},
{
xtype: 'phone',
fieldLabel: 'business'
}
],
isValid: function() {
let valid = false;
if (this.callParent(arguments)) {
for (const item in this.getItems()) {
if (item.getValue() != '') {
valid = true;
break;
}
}
}
return valid;
}
});
これはこれを行うには正しい方法です:
私はこのような何かをやって考えていますか?
アイデアは余分な毛羽立ちを最小限にすることです。たとえば、フォームパネルにはドッキング可能なボタン、ヘッダー、フッター要素は必要ありません。また、私はExtJSのページ上に複数のフォーム項目を持つ問題について読んだので、1ページに順次フォームやネストされたフォームを避けたい。
Ext.container.Container
をExt.form.Labelable
とExt.form.field.Field
mixinsで拡張する方法もあります。それは働くだろうか?
ありがとうございます。連絡先ウィジェットをフォームに接続して、カスタムハンドラなしでそのまま動作させる方法を探していました。 –