logologo
Démarrer
Manuel
Développement
Plugins
API
Accueil
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Démarrer
Manuel
Développement
Plugins
API
Accueil
logologo
Présentation de RunJS
Importation de modules
Rendu dans le conteneur

Variables globales

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()
Avis de traduction IA

Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.

#ctx.view

Le contrôleur de la vue actuellement active (fenêtre de dialogue, tiroir, popover, zone intégrée, etc.), utilisé pour accéder aux informations et aux opérations au niveau de la vue. Fourni par FlowViewContext, il est uniquement disponible dans le contenu des vues ouvertes via ctx.viewer ou ctx.openView.

#Scénarios d'utilisation

ScénarioDescription
Contenu de dialogue/tiroirUtilisez ctx.view.close() dans le content pour fermer la vue actuelle, ou utilisez Header et Footer pour afficher les titres et les pieds de page.
Après la soumission d'un formulaireAppelez ctx.view.close(result) après une soumission réussie pour fermer la vue et renvoyer le résultat.
JSBlock / ActionDéterminez le type de vue actuel via ctx.view.type, ou lisez les paramètres d'ouverture dans ctx.view.inputArgs.
Sélection d'association, sous-tableauxLisez collectionName, filterByTk, parentId, etc., depuis inputArgs pour le chargement des données.

Note : ctx.view est uniquement disponible dans les environnements RunJS disposant d'un contexte de vue (par exemple, à l'intérieur du content de ctx.viewer.dialog(), dans les formulaires de dialogue ou à l'intérieur des sélecteurs d'association). Dans les pages standard ou les contextes backend, il est undefined. Il est recommandé d'utiliser le chaînage optionnel (ctx.view?.close?.()).

#Définition du type

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>;  // Disponible dans les vues de configuration de flux de travail
};

#Propriétés et méthodes communes

Propriété/MéthodeTypeDescription
type'drawer' | 'popover' | 'dialog' | 'embed'Type de vue actuel
inputArgsRecord<string, any>Paramètres transmis lors de l'ouverture de la vue (voir ci-dessous)
HeaderReact.FC | nullComposant d'en-tête, utilisé pour afficher les titres et les zones d'action
FooterReact.FC | nullComposant de pied de page, utilisé pour afficher des boutons, etc.
close(result?, force?)voidFerme la vue actuelle ; result peut être renvoyé à l'appelant
update(newConfig)voidMet à jour la configuration de la vue (ex : largeur, titre)
navigationViewNavigation | undefinedNavigation de vue interne à la page, incluant le changement d'onglet (Tab), etc.

Actuellement, seuls dialog et drawer prennent en charge Header et Footer.

#Champs communs de inputArgs

Les champs de inputArgs varient selon le scénario d'ouverture. Les champs courants incluent :

ChampDescription
viewUidUID de la vue
collectionNameNom de la collection
filterByTkFiltre par clé primaire (pour les détails d'un enregistrement unique)
parentIdID parent (pour les scénarios d'association)
sourceIdID de l'enregistrement source
parentItemDonnées de l'élément parent
sceneScène (ex : create, edit, select)
onChangeRappel (callback) après sélection ou modification
tabUidUID de l'onglet actuel (au sein d'une page)

Accédez à ces champs via ctx.getVar('ctx.view.inputArgs.xxx') ou ctx.view.inputArgs.xxx.

#Exemples

#Fermer la vue actuelle

// Fermer le dialogue après une soumission réussie
await ctx.resource.runAction('create', { data: formData });
ctx.view?.close();

// Fermer et renvoyer les résultats
ctx.view?.close({ id: newRecord.id, name: newRecord.name });

#Utiliser Header / Footer dans le contenu

function DialogContent() {
  const ctx = useFlowViewContext();
  const { Header, Footer, close } = ctx.view;
  return (
    <div>
      <Header title="Modifier" extra={<Button size="small">Aide</Button>} />
      <div>Contenu du formulaire...</div>
      <Footer>
        <Button onClick={() => close()}>Annuler</Button>
        <Button type="primary" onClick={handleSubmit}>Envoyer</Button>
      </Footer>
    </div>
  );
}

#Branchement basé sur le type de vue ou inputArgs

if (ctx.view?.type === 'embed') {
  // Masquer l'en-tête dans les vues intégrées
  ctx.model.setProps('headerStyle', { display: 'none' });
}

const collectionName = ctx.view?.inputArgs?.collectionName;
if (collectionName === 'users') {
  // Scénario du sélecteur d'utilisateurs
}

#Relation avec ctx.viewer et ctx.openView

UsageUtilisation recommandée
Ouvrir une nouvelle vuectx.viewer.dialog() / ctx.viewer.drawer() ou ctx.openView()
Manipuler la vue actuellectx.view.close(), ctx.view.update()
Obtenir les paramètres d'ouverturectx.view.inputArgs

ctx.viewer est responsable de l'ouverture d'une vue, tandis que ctx.view représente l'instance de la vue "actuelle" ; ctx.openView est utilisé pour ouvrir des vues de flux de travail préconfigurées.

#Précautions

  • ctx.view est uniquement disponible à l'intérieur d'une vue ; il est undefined sur les pages standard.
  • Utilisez le chaînage optionnel : ctx.view?.close?.() pour éviter les erreurs lorsqu'aucun contexte de vue n'existe.
  • Le result de close(result) est transmis à la Promise renvoyée par ctx.viewer.open().

#Voir aussi

  • ctx.openView() : Ouvrir une vue de flux de travail préconfigurée
  • ctx.modal : Fenêtres contextuelles légères (informations, confirmation, etc.)

ctx.viewer fournit des méthodes telles que dialog(), drawer(), popover() et embed() pour ouvrir des vues. Le contenu (content) ouvert par ces méthodes peut accéder à ctx.view.