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.router
Next Pagectx.sql
Avis de traduction IA

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

#ctx.setValue()

Définit la valeur du champ actuel dans les scénarios de champs modifiables tels que JSField et JSItem. Combiné avec ctx.getValue(), il permet une liaison bidirectionnelle (two-way binding) avec le formulaire.

#Cas d'utilisation

ScénarioDescription
JSFieldÉcrire des valeurs sélectionnées par l'utilisateur ou calculées dans des champs personnalisés modifiables.
JSItemMettre à jour la valeur de la cellule actuelle dans les éléments modifiables des tableaux ou sous-tableaux.
JSColumnMettre à jour la valeur du champ de la ligne correspondante selon une logique lors du rendu des colonnes du tableau.

Remarque : ctx.setValue(v) est uniquement disponible dans les contextes RunJS avec liaison de formulaire. Cette méthode n'existe pas dans les scénarios sans liaison de champ, tels que les flux de travail (Workflow), les règles de liaison ou JSBlock. Il est recommandé d'utiliser le chaînage optionnel avant l'utilisation : ctx.setValue?.(value).

#Définition du type

setValue<T = any>(value: T): void;
  • Paramètres : value est la valeur du champ à écrire. Le type est déterminé par le type d'élément de formulaire du champ.

#Comportement

  • ctx.setValue(v) met à jour la valeur du champ actuel dans le formulaire Ant Design et déclenche la logique de liaison et de validation du formulaire associée.
  • Si le formulaire n'a pas fini de s'afficher ou si le champ n'est pas enregistré, l'appel peut être inefficace. Il est recommandé d'utiliser ctx.getValue() pour confirmer le résultat de l'écriture.

#Exemples

#Liaison bidirectionnelle avec getValue

const { Input } = ctx.libs.antd;

const defaultValue = ctx.getValue() ?? '';

ctx.render(
  <Input
    defaultValue={defaultValue}
    onChange={(e) => ctx.setValue(e.target.value)}
  />
);

#Définir des valeurs par défaut selon des conditions

const status = ctx.getValue();
if (status == null || status === '') {
  ctx.setValue?.('draft');
}

#Réécriture dans le champ actuel lors de la liaison avec d'autres champs

// Mettre à jour de manière synchrone le champ actuel lorsqu'un autre champ change
const otherValue = ctx.form?.getFieldValue('type');
if (otherValue === 'custom') {
  ctx.setValue?.({ label: 'Personnalisé', value: 'custom' });
}

#Précautions

  • Dans les champs non modifiables (par exemple, JSField en mode lecture seule, JSBlock), ctx.setValue peut être undefined. Il est recommandé d'utiliser ctx.setValue?.(value) pour éviter les erreurs.
  • Lors de la définition de valeurs pour des champs d'association (M2O, O2M, etc.), vous devez passer une structure correspondant au type de champ (par exemple, { id, [titleField]: label }), selon la configuration spécifique du champ.

#Articles connexes

  • ctx.getValue() - Récupère la valeur du champ actuel, utilisé avec setValue pour la liaison bidirectionnelle.
  • ctx.form - Instance de formulaire Ant Design, utilisée pour lire ou écrire dans d'autres champs.
  • js-field:value-change - Un événement de conteneur déclenché lorsqu'une valeur externe change, utilisé pour mettre à jour l'affichage.