KI-Übersetzungshinweis

Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.

ctx.collection

Die Instanz der Sammlung (Collection), die mit dem aktuellen RunJS-Ausführungskontext verknüpft ist. Sie wird verwendet, um auf Metadaten der Sammlung, Felddefinitionen, Primärschlüssel und andere Konfigurationen zuzugreifen. Sie stammt normalerweise von ctx.blockModel.collection oder ctx.collectionField?.collection.

Anwendungsfälle

SzenarioBeschreibung
JS-BlockDie an den Block gebundene Sammlung; Zugriff auf name, getFields, filterTargetKey usw. möglich.
JS-Feld / JS-Element / JS-SpalteDie Sammlung, zu der das aktuelle Feld gehört (oder die Sammlung des übergeordneten Blocks), wird verwendet, um Feldlisten, Primärschlüssel usw. abzurufen.
Tabellenspalte / Detail-BlockWird für das Rendering basierend auf der Sammlungsstruktur oder zur Übergabe von filterByTk beim Öffnen von Popups verwendet.

Hinweis: ctx.collection ist in Szenarien verfügbar, in denen ein Daten-Block, Formular-Block oder Tabellen-Block an eine Sammlung gebunden ist. In einem unabhängigen JS-Block, der nicht an eine Sammlung gebunden ist, kann dieser Wert null sein. Es wird empfohlen, vor der Verwendung eine Prüfung auf Nullwerte durchzuführen.

Typdefinition

collection: Collection | null | undefined;

Gängige Eigenschaften

EigenschaftTypBeschreibung
namestringName der Sammlung (z. B. users, orders)
titlestringTitel der Sammlung (einschließlich Internationalisierung)
filterTargetKeystring | string[]Name des Primärschlüsselfeldes, verwendet für filterByTk und getFilterByTK
dataSourceKeystringSchlüssel der Datenquelle (z. B. main)
dataSourceDataSourceDie Instanz der Datenquelle, zu der sie gehört
templatestringVorlage der Sammlung (z. B. general, file, tree)
titleableFieldsCollectionField[]Liste der Felder, die als Titel angezeigt werden können
titleCollectionFieldCollectionFieldDie Instanz des Titelfeldes

Gängige Methoden

MethodeBeschreibung
getFields(): CollectionField[]Ruft alle Felder ab (einschließlich vererbter Felder)
getField(name: string): CollectionField | undefinedRuft ein einzelnes Feld anhand des Feldnamens ab
getFieldByPath(path: string): CollectionField | undefinedRuft ein Feld anhand des Pfads ab (unterstützt Assoziationen, z. B. user.name)
getAssociationFields(types?): CollectionField[]Ruft Assoziationsfelder ab; types können ['one'], ['many'] usw. sein
getFilterByTK(record): anyExtrahiert den Primärschlüsselwert aus einem Datensatz, verwendet für filterByTk der API

Beziehung zu ctx.collectionField und ctx.blockModel

AnforderungEmpfohlene Verwendung
Mit dem aktuellen Kontext verknüpfte Sammlungctx.collection (entspricht ctx.blockModel?.collection oder ctx.collectionField?.collection)
Sammlungsdefinition des aktuellen Feldesctx.collectionField?.collection (die Sammlung, zu der das Feld gehört)
Ziel-Sammlung der Assoziationctx.collectionField?.targetCollection (die Ziel-Sammlung eines Assoziationsfeldes)

In Szenarien wie Untertabellen kann ctx.collection die Ziel-Sammlung der Assoziation sein; in Standardformularen oder Tabellen ist es normalerweise die an den Block gebundene Sammlung.

Beispiele

Primärschlüssel abrufen und Popup öffnen

const primaryKey = ctx.collection?.filterTargetKey ?? 'id';
await ctx.openView(popupUid, {
  mode: 'dialog',
  params: {
    filterByTk: ctx.record?.[primaryKey],
    record: ctx.record,
  },
});

Felder für Validierung oder Verknüpfung durchlaufen

const fields = ctx.collection?.getFields() ?? [];
const requiredFields = fields.filter((f) => f.options?.required);
for (const f of requiredFields) {
  const v = ctx.form?.getFieldValue(f.name);
  if (v == null || v === '') {
    ctx.message.warning(`${f.title} ist ein Pflichtfeld`);
    return;
  }
}

Assoziationsfelder abrufen

const oneToMany = ctx.collection?.getAssociationFields(['many']) ?? [];
// Wird zum Erstellen von Untertabellen, verknüpften Ressourcen usw. verwendet

Hinweise

  • filterTargetKey ist der Name des Primärschlüsselfeldes der Sammlung. Einige Sammlungen verwenden möglicherweise ein string[] für zusammengesetzte Primärschlüssel. Wenn dies nicht konfiguriert ist, wird üblicherweise 'id' als Rückfalloption verwendet.
  • In Szenarien wie Untertabellen oder Assoziationsfeldern kann ctx.collection auf die Ziel-Sammlung der Assoziation verweisen, was sich von ctx.blockModel.collection unterscheidet.
  • getFields() führt Felder aus vererbten Sammlungen zusammen; lokale Felder überschreiben vererbte Felder mit demselben Namen.

Verwandte Themen

  • ctx.collectionField: Die Felddefinition der Sammlung für das aktuelle Feld
  • ctx.blockModel: Der übergeordnete Block, der das aktuelle JS hostet, einschließlich collection
  • ctx.model: Das aktuelle Modell, das collection enthalten kann