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.t()
KI-Übersetzungshinweis

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

#ctx.view

Der aktuell aktive View-Controller (Dialog, Drawer, Popover, eingebetteter Bereich usw.), der für den Zugriff auf Informationen und Operationen auf Ansichtsebene verwendet wird. Er wird von FlowViewContext bereitgestellt und ist nur innerhalb von Inhalten verfügbar, die über ctx.viewer oder ctx.openView geöffnet wurden.

#Anwendungsfälle

SzenarioBeschreibung
Dialog-/Drawer-InhaltVerwenden Sie ctx.view.close() innerhalb des content, um die aktuelle Ansicht zu schließen, oder nutzen Sie Header und Footer, um Titel und Fußzeilen zu rendern.
Nach dem Absenden des FormularsRufen Sie nach einer erfolgreichen Übermittlung ctx.view.close(result) auf, um die Ansicht zu schließen und das Ergebnis zurückzugeben.
JS-Block / AktionBestimmen Sie den aktuellen Ansichtstyp über ctx.view.type oder lesen Sie Öffnungsparameter aus ctx.view.inputArgs aus.
Verknüpfungsauswahl, UntertabellenLesen Sie collectionName, filterByTk, parentId usw. aus den inputArgs für das Laden von Daten aus.

Hinweis: ctx.view ist nur in RunJS-Umgebungen mit einem View-Kontext verfügbar (z. B. innerhalb des content von ctx.viewer.dialog(), in Dialogformularen oder innerhalb von Verknüpfungsauswahlen). In Standardseiten oder Backend-Kontexten ist es undefined. Es wird empfohlen, Optional Chaining zu verwenden (ctx.view?.close?.()).

#Typdefinition

type FlowView = {
  type: 'drawer' | 'popover' | 'dialog' | 'embed';
  inputArgs: Record<string, any>;
  Header: React.FC<{ title?: React.ReactNode; extra?: React.ReactNode }> | null;
  Footer: React.FC<{ children?: React.ReactNode }> | null;
  close: (result?: any, force?: boolean) => void;
  update: (newConfig: any) => void;
  navigation?: ViewNavigation;
  destroy?: () => void;
  submit?: () => Promise<any>;  // In Workflow-Konfigurationsansichten verfügbar
};

#Gängige Eigenschaften und Methoden

Eigenschaft/MethodeTypBeschreibung
type'drawer' | 'popover' | 'dialog' | 'embed'Aktueller Ansichtstyp
inputArgsRecord<string, any>Parameter, die beim Öffnen der Ansicht übergeben wurden (siehe unten)
HeaderReact.FC | nullKopfzeilen-Komponente zum Rendern von Titeln und Aktionsbereichen
FooterReact.FC | nullFußzeilen-Komponente zum Rendern von Schaltflächen usw.
close(result?, force?)voidSchließt die aktuelle Ansicht; result kann an den Aufrufer zurückgegeben werden
update(newConfig)voidAktualisiert die Ansichtskonfiguration (z. B. Breite, Titel)
navigationViewNavigation | undefinedAnsichtsnavigation innerhalb der Seite, einschließlich Tab-Wechsel usw.

Derzeit unterstützen nur dialog und drawer die Komponenten Header und Footer.

#Gängige Felder in inputArgs

Die Felder in inputArgs variieren je nach Öffnungsszenario. Zu den häufigsten Feldern gehören:

FeldBeschreibung
viewUidAnsichts-UID
collectionNameName der Sammlung
filterByTkPrimärschlüsselfilter (für Einzeldatensatz-Details)
parentIdEltern-ID (für Verknüpfungsszenarien)
sourceIdQuelldatensatz-ID
parentItemDaten des Elternelements
sceneSzenario (z. B. create, edit, select)
onChangeCallback nach Auswahl oder Änderung
tabUidAktuelle Tab-UID (innerhalb einer Seite)

Greifen Sie auf diese über ctx.getVar('ctx.view.inputArgs.xxx') oder ctx.view.inputArgs.xxx zu.

#Beispiele

#Schließen der aktuellen Ansicht

// Dialog nach erfolgreichem Absenden schließen
await ctx.resource.runAction('create', { data: formData });
ctx.view?.close();

// Schließen und Ergebnisse zurückgeben
ctx.view?.close({ id: newRecord.id, name: newRecord.name });

#Verwendung von Header / Footer im Inhalt

function DialogContent() {
  const ctx = useFlowViewContext();
  const { Header, Footer, close } = ctx.view;
  return (
    <div>
      <Header title="Bearbeiten" extra={<Button size="small">Hilfe</Button>} />
      <div>Formularinhalt...</div>
      <Footer>
        <Button onClick={() => close()}>Abbrechen</Button>
        <Button type="primary" onClick={handleSubmit}>Absenden</Button>
      </Footer>
    </div>
  );
}

#Verzweigung basierend auf Ansichtstyp oder inputArgs

if (ctx.view?.type === 'embed') {
  // Kopfzeile in eingebetteten Ansichten ausblenden
  ctx.model.setProps('headerStyle', { display: 'none' });
}

const collectionName = ctx.view?.inputArgs?.collectionName;
if (collectionName === 'users') {
  // Szenario für Benutzerauswahl
}

#Beziehung zu ctx.viewer und ctx.openView

ZweckEmpfohlene Verwendung
Neue Ansicht öffnenctx.viewer.dialog() / ctx.viewer.drawer() oder ctx.openView()
Aktuelle Ansicht bedienenctx.view.close(), ctx.view.update()
Öffnungsparameter abrufenctx.view.inputArgs

ctx.viewer ist für das „Öffnen“ einer Ansicht zuständig, während ctx.view die „aktuelle“ Ansichtsinstanz darstellt. ctx.openView wird verwendet, um vorkonfigurierte Workflow-Ansichten zu öffnen.

#Hinweise

  • ctx.view ist nur innerhalb einer Ansicht verfügbar; auf Standardseiten ist es undefined.
  • Verwenden Sie Optional Chaining: ctx.view?.close?.(), um Fehler zu vermeiden, wenn kein View-Kontext existiert.
  • Das result von close(result) wird an das von ctx.viewer.open() zurückgegebene Promise übergeben.

#Verwandte Themen

  • ctx.openView(): Öffnet eine vorkonfigurierte Workflow-Ansicht
  • ctx.modal: Leichtgewichtige Popups (Informationen, Bestätigungen usw.)

ctx.viewer bietet Methoden wie dialog(), drawer(), popover() und embed() zum Öffnen von Ansichten an. Der über diese Methoden geöffnete content kann auf ctx.view zugreifen.