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.on()
Next Pagectx.render()
KI-Übersetzungshinweis

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

#ctx.openView()

Öffnet programmatisch eine angegebene Ansicht (Drawer, Dialog, eingebettete Seite usw.). Bereitgestellt durch FlowModelContext, wird es verwendet, um konfigurierte ChildPage- oder PopupAction-Ansichten in Szenarien wie JSBlock, Tabellenzellen und Workflows zu öffnen.

#Szenarien

SzenarioBeschreibung
JSBlockÖffnen eines Detail-/Bearbeitungs-Dialogs nach einem Klick auf eine Schaltfläche, wobei filterByTk der aktuellen Zeile übergeben wird.
TabellenzelleRendern einer Schaltfläche innerhalb einer Zelle, die bei Klick einen Zeilendetail-Dialog öffnet.
Workflow / JSActionÖffnen der nächsten Ansicht oder eines Dialogs nach einer erfolgreichen Operation.
VerknüpfungsfeldÖffnen eines Auswahl-/Bearbeitungs-Dialogs über ctx.runAction('openView', params).

Hinweis: ctx.openView ist in einer RunJS-Umgebung verfügbar, in der ein FlowModel-Kontext existiert. Wenn das Modell, das der uid entspricht, nicht existiert, wird automatisch ein PopupActionModel erstellt und dauerhaft gespeichert.

#Signatur

openView(uid: string, options?: OpenViewOptions): Promise<void>

#Parameterbeschreibung

#uid

Die eindeutige Kennung des Ansichtsmodells. Falls es nicht existiert, wird es automatisch erstellt und gespeichert. Es wird empfohlen, eine stabile UID zu verwenden, wie z. B. ${ctx.model.uid}-detail, damit die Konfiguration beim mehrfachen Öffnen desselben Dialogs wiederverwendet werden kann.

#Gängige options-Felder

FeldTypBeschreibung
modedrawer / dialog / embedÖffnungsmethode: Drawer, Dialog oder eingebettet. Standardmäßig drawer.
sizesmall / medium / largeGröße des Dialogs oder Drawers. Standardmäßig medium.
titlestringTitel der Ansicht.
paramsRecord<string, any>Beliebige Parameter, die an die Ansicht übergeben werden.
filterByTkanyPrimärschlüsselwert, verwendet für Detail-/Bearbeitungsszenarien einzelner Datensätze.
sourceIdstringID des Quelldatensatzes, verwendet in Verknüpfungsszenarien.
dataSourceKeystringDatenquelle.
collectionNamestringName der Sammlung.
associationNamestringName des Verknüpfungsfeldes.
navigationbooleanOb Routen-Navigation verwendet werden soll. Wenn defineProperties oder defineMethods angegeben sind, wird dies erzwungen auf false gesetzt.
preventClosebooleanOb das Schließen verhindert werden soll.
definePropertiesRecord<string, PropertyOptions>Dynamisches Einfügen von Eigenschaften in das Modell innerhalb der Ansicht.
defineMethodsRecord<string, Function>Dynamisches Einfügen von Methoden in das Modell innerhalb der Ansicht.

#Beispiele

#Grundlegende Verwendung: Einen Drawer öffnen

const popupUid = `${ctx.model.uid}-detail`;
await ctx.openView(popupUid, {
  mode: 'drawer',
  size: 'medium',
  title: ctx.t('Details'),
});

#Kontext der aktuellen Zeile übergeben

const primaryKey = ctx.collection?.primaryKey || 'id';
await ctx.openView(`${ctx.model.uid}-1`, {
  mode: 'dialog',
  title: ctx.t('Zeilendetails'),
  params: {
    filterByTk: ctx.record?.[primaryKey],
    record: ctx.record,
  },
});

#Über runAction öffnen

Wenn ein Modell mit einer openView-Aktion konfiguriert ist (z. B. Verknüpfungsfelder oder anklickbare Felder), können Sie diese aufrufen:

await ctx.runAction('openView', {
  navigation: false,
  mode: 'dialog',
  collectionName: 'users',
  filterByTk: ctx.record?.id,
});

#Benutzerdefinierten Kontext injizieren

await ctx.openView(`${ctx.model.uid}-edit`, {
  mode: 'drawer',
  filterByTk: ctx.record?.id,
  defineProperties: {
    onSaved: {
      get: () => () => ctx.resource?.refresh?.(),
      cache: false,
    },
  },
});

#Beziehung zu ctx.viewer und ctx.view

VerwendungszweckEmpfohlene Verwendung
Konfigurierte Workflow-Ansicht öffnenctx.openView(uid, options)
Benutzerdefinierten Inhalt öffnen (kein Workflow)ctx.viewer.dialog() / ctx.viewer.drawer()
Aktuelle geöffnete Ansicht bedienenctx.view.close(), ctx.view.inputArgs

ctx.openView öffnet eine FlowPage (ChildPageModel), die intern eine vollständige Workflow-Seite rendert; ctx.viewer öffnet beliebige React-Inhalte.

#Hinweise

  • Es wird empfohlen, die uid mit ctx.model.uid zu verknüpfen (z. B. ${ctx.model.uid}-xxx), um Konflikte zwischen mehreren Blöcken zu vermeiden.
  • Wenn defineProperties oder defineMethods übergeben werden, wird navigation erzwungen auf false gesetzt, um einen Kontextverlust nach einer Aktualisierung zu verhindern.
  • Innerhalb des Dialogs bezieht sich ctx.view auf die aktuelle Ansichtsinstanz, und ctx.view.inputArgs kann verwendet werden, um die beim Öffnen übergebenen Parameter zu lesen.

#Verwandte Themen

  • ctx.view: Die aktuell geöffnete Ansichtsinstanz.
  • ctx.model: Das aktuelle Modell, das zur Konstruktion einer stabilen popupUid verwendet wird.