Wenn ich eine Ansichtsklasse definieren, muss ich viele wiederholte Konfigurationen für untergeordnete Komponenten festlegen. HierExtjs 6: Was ist die Best Practice, um wiederholte Konfiguration zu behandeln?
ein Beispiel:
Ext.define('TEST.view.transaction.TransactionEditor', {
extend: 'Ext.form.Panel',
...
items: [{
...
labelWidth:80,
width: 230,
tdAttrs: { style: 'padding: 10px 20px 10px 20px;' },
...
},{
...
labelWidth:80,
width: 230,
tdAttrs: { style: 'padding: 10px 20px 10px 20px;' }
...
},
...
],
...
}
Wie Sie sehen können, die labelwidth, Breite und Stil werden mehrmals wiederholt. Ich möchte anstelle dieser magischen Zahlen einige Konstanten oder Variablen verwenden. Was ist der richtige Weg, um es in EXTJS zu tun?
UPDATE: Die folgenden beiden Methoden nicht gut funktionieren.
mit Vorgaben arbeitet für labelwidth und Breite, funktioniert aber nicht für tdAttrs.
Mit der initComponent-Methode wurde die Komponente nicht mehr angezeigt.
initcomponent: function() {
var tdAttrs = { style: 'padding: 10px 20px 10px 20px;' }; Ext.apply(this,{ items:[{ tdAttrs:tdAttrs }]} ); this.callParent(arguments); },
UPDATE2:
ich die Frage der tdAttrs nicht gelöst Arbeitsmethode 1. tdAttrs verwenden sollte stattdessen unter Layout Konfiguration gesetzt werden von Standardeinstellungen. Ich weiß nicht warum, aber hier ist der Arbeitscode.
layout: {
type: 'table',
// The total column count must be specified here
columns: 4,
tdAttrs: { style: 'padding: 5px 10px 5px 10px;' }
},
defaults:{
labelWidth:70,
width: 210
},
items: [/* include child components here */
{
...
},
{
...
},
...
]
Für die initComponent-Methode weiß ich immer noch nicht, wie es geht. Bitte helfen Sie.
Ich habe meine Antwort zu initComponent aktualisiert, hoffe, es hilft. Sie müssen ['tdAttrs'] (http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.layout.container.Table-cfg-tdAttrs) in das Layout einfügen weil sie sich in den Dokumenten in 'Ext.layout.container.Table' (' layout: 'table'') befinden und diese über das Layout-Subconfig definiert sind. Jede Konfiguration, die Sie in einem 'Ext.layout.container.XYZ' (Layout: 'xyz'') finden, muss im Layout-Subconfig definiert werden. – Alexander