와 컨테이너를 구현의 우리가 세 개의 전화 번호 필드가 있다고 가정 해 보자 방법 : 우리는 contact
항목으로 캡슐화 할 것인지, mobile
, home
, business
을.의 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.form.Labelable
및 Ext.form.field.Field
mixins로 Ext.container.Container
을 확장하는 것일 수 있습니다. 그게 효과가 있니?
고맙습니다. 연락처 위젯을 폼에 연결하고 맞춤 핸들러 없이는 그대로 작동하도록하는 방법을 찾고있었습니다. –