logologo
Start
Handbuch
Entwicklung
Plugins
API
Startseite
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Start
Handbuch
Entwicklung
Plugins
API
Startseite
logologo
RunJS Übersicht
Module importieren
Rendern im Container

Globale Variablen

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.blockModel
Next Pagectx.collectionField
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