例如一個容器中,讓我們說我們有三個電話號碼字段:mobile
,home
,business
,我們要封裝的contact
項目。ExtJS的 - 如何實現與自己的isValid和hasInvalidField方法
電話號碼字段可以是空白的,如果沒有,則有其自己的有效性檢查,聯繫人項目具有其自己的有效性檢查,因爲必須提供至少一個號碼。
我在考慮做這樣的事情:
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中頁面上具有多個表單項的問題,因此想要避免單個頁面上的順序或嵌套表單。
另一種方法可能是將Ext.container.Container
與Ext.form.Labelable
和Ext.form.field.Field
mixin一起擴展。這會起作用嗎?
謝謝。我正在尋找一種方法將聯繫人小部件插入到表單中,並使其按原樣工作,而無需自定義處理程序。 –