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.requireAsync()
Next Pagectx.route
Avis de traduction IA

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

#ctx.resource

L'instance FlowResource dans le contexte actuel, utilisée pour accéder aux données et les manipuler. Dans la plupart des blocs (formulaires, tableaux, détails, etc.) et les scénarios de fenêtres contextuelles (pop-ups), l'environnement d'exécution lie préalablement ctx.resource. Dans des scénarios comme JSBlock où il n'y a pas de ressource par défaut, vous devez d'abord appeler ctx.initResource() pour l'initialiser avant de l'utiliser via ctx.resource.

#Scénarios d'utilisation

ctx.resource peut être utilisé dans n'importe quel scénario RunJS nécessitant l'accès à des données structurées (listes, enregistrements uniques, API personnalisées, SQL). Les blocs de formulaires, de tableaux, de détails et les fenêtres contextuelles sont généralement pré-liés. Pour JSBlock, JSField, JSItem, JSColumn, etc., si le chargement de données est requis, vous pouvez d'abord appeler ctx.initResource(type) puis accéder à ctx.resource.

#Définition du type

resource: FlowResource | undefined;
  • Dans les contextes avec liaison préalable, ctx.resource est l'instance de ressource correspondante.
  • Dans les scénarios comme JSBlock où il n'y a pas de ressource par défaut, la valeur est undefined jusqu'à ce que ctx.initResource(type) soit appelé.

#Méthodes courantes

Les méthodes exposées par les différents types de ressources (MultiRecordResource, SingleRecordResource, APIResource, SQLResource) varient légèrement. Voici les méthodes universelles ou couramment utilisées :

MéthodeDescription
getData()Récupérer les données actuelles (liste ou enregistrement unique)
setData(value)Définir les données locales
refresh()Lancer une requête avec les paramètres actuels pour rafraîchir les données
setResourceName(name)Définir le nom de la ressource (ex: 'users', 'users.tags')
setFilterByTk(tk)Définir le filtre par clé primaire (pour le get d'un enregistrement unique, etc.)
runAction(actionName, options)Appeler n'importe quelle action de ressource (ex: create, update)
on(event, callback) / off(event, callback)S'abonner/se désabonner à des événements (ex: refresh, saved)

Spécifique à MultiRecordResource : getSelectedRows(), destroySelectedRows(), setPage(), next(), previous(), etc.

#Exemples

#Données de liste (nécessite d'abord initResource)

ctx.initResource('MultiRecordResource');
ctx.resource.setResourceName('users');
await ctx.resource.refresh();
const rows = ctx.resource.getData();

#Scénario de tableau (pré-lié)

const rows = ctx.resource?.getSelectedRows?.() || [];
for (const row of rows) {
  console.log(row);
}

await ctx.resource.destroySelectedRows();
ctx.message.success(ctx.t('Supprimé'));

#Enregistrement unique

ctx.initResource('SingleRecordResource');
ctx.resource.setResourceName('users');
ctx.resource.setFilterByTk(1);
await ctx.resource.refresh();
const record = ctx.resource.getData();

#Appel d'une action personnalisée

await ctx.resource.runAction('create', { data: { name: 'Jean Dupont' } });

#Relation avec ctx.initResource / ctx.makeResource

  • ctx.initResource(type) : Si ctx.resource n'existe pas, cette méthode en crée une et la lie ; si elle existe déjà, elle renvoie l'instance existante. Cela garantit que ctx.resource est disponible.
  • ctx.makeResource(type) : Crée une nouvelle instance de ressource et la renvoie, mais ne l'écrit pas dans ctx.resource. Cela convient aux scénarios nécessitant plusieurs ressources indépendantes ou une utilisation temporaire.
  • ctx.resource : Accède à la ressource déjà liée au contexte actuel. La plupart des blocs/fenêtres contextuelles sont pré-liés ; sinon, elle est undefined et nécessite ctx.initResource.

#Précautions

  • Il est recommandé d'effectuer une vérification de valeur nulle avant l'utilisation : ctx.resource?.refresh(), en particulier dans des scénarios comme JSBlock où la liaison préalable peut ne pas exister.
  • Après l'initialisation, vous devez appeler setResourceName(name) pour spécifier la collection avant de charger les données via refresh().
  • Pour l'API complète de chaque type de ressource, consultez les liens ci-dessous.

#Voir aussi

  • ctx.initResource() - Initialiser et lier une ressource au contexte actuel
  • ctx.makeResource() - Créer une nouvelle instance de ressource sans la lier à ctx.resource
  • MultiRecordResource - Enregistrements multiples / Listes
  • SingleRecordResource - Enregistrement unique
  • APIResource - Ressource API générale
  • SQLResource - Ressource de requête SQL