Ich habe den folgenden Code in ExtJSExtJS bedingt machen Eingabefelder
var formPanel = Ext.create('Ext.form.Panel', {
title: 'Panel title',
renderTo: Ext.getBody(),
items: [{
xtype: 'container',
layout: 'hbox',
items: [{
xtype: 'textfield',
fieldLabel: 'First Name',
name: 'FirstName',
}, {
xtype: 'textfield',
fieldLabel: 'Last Name',
name: 'LastName',
},{
xtype:'fieldset',
title: 'Phone Number',
defaultType: 'textfield',
items :[{
fieldLabel: 'Home',
name: 'home',
value: '(888) 555-1212'
},{
fieldLabel: 'Business',
name: 'business',
toBeRendered: IS_BUSINESS_FIELD_SUPPORTED_IN_CURRENT_RELEASE // custom property that must restrict rendering
rendered: IS_BUSINESS_FIELD_SUPPORTED_IN_CURRENT_RELEASE //doesn't work
}]
}]
}]
});
Ich möchte eine Anwendung erstellen, die Eigenschaften haben Datei, wo ich Flaggen für einrichten können SUPPORTED
Felder z IS_BUSINESS_FIELD_SUPPORTED_IN_CURRENT_RELEASE = false
. Wenn es falsch ist als Texteingabe fieldLabel: 'Business'
wird überhaupt nicht gerendert werden - keine versteckte/deaktivierte Texteingabe Business
in HTML.
Ich habe versucht rendered
Eigenschaft - aber es funktioniert nicht, die einzige Lösung ist bisher items = Ext.Array.filter(items,filterFunction)
in onRender
zu verwenden;
Gibt es noch andere Lösungen, wie kann ich Rendering-Eingabeelemente einschränken?
Vielen Dank im Voraus.
Warum nicht einfach die dynamischen Elemente vor dem Rendern erstellen? Es ist nur ein Array. –
Ich denke, dass der beste Ansatz darin besteht, benutzerdefinierte Komponenten für Ihre Anwendungsteile zu definieren und die erforderlichen Komponenten innerhalb ihres "Konstruktors" hinzuzufügen. –