logologo
Empezar
Manual
Desarrollo
Plugins
API
Inicio
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Empezar
Manual
Desarrollo
Plugins
API
Inicio
logologo
Descripción general de RunJS
Importación de módulos
Renderizado en contenedor

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.blockModel
Next Pagectx.collectionField
Aviso de traducción IA

Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.

#ctx.collection

La instancia de la colección (Collection) asociada al contexto de ejecución actual de RunJS, utilizada para acceder a los metadatos de la colección, definiciones de campos, claves primarias y otras configuraciones. Generalmente proviene de ctx.blockModel.collection o ctx.collectionField?.collection.

#Escenarios de uso

EscenarioDescripción
JSBlockLa colección vinculada al bloque; permite acceder a name, getFields, filterTargetKey, etc.
JSField / JSItem / JSColumnLa colección a la que pertenece el campo actual (o la colección del bloque padre), utilizada para obtener listas de campos, claves primarias, etc.
Columna de tabla / Bloque de detallesSe utiliza para el renderizado basado en la estructura de la colección o para pasar filterByTk al abrir ventanas emergentes.

Nota: ctx.collection está disponible en escenarios donde un bloque de datos, bloque de formulario o bloque de tabla está vinculado a una colección. En un JSBlock independiente que no esté vinculado a una colección, puede ser null. Se recomienda realizar una comprobación de valores nulos antes de su uso.

#Definición de tipo

collection: Collection | null | undefined;

#Propiedades comunes

PropiedadTipoDescripción
namestringNombre de la colección (ej. users, orders)
titlestringTítulo de la colección (incluye internacionalización)
filterTargetKeystring | string[]Nombre del campo de la clave primaria, utilizado para filterByTk y getFilterByTK
dataSourceKeystringClave de la fuente de datos (ej. main)
dataSourceDataSourceLa instancia de la fuente de datos a la que pertenece
templatestringPlantilla de la colección (ej. general, file, tree)
titleableFieldsCollectionField[]Lista de campos que pueden mostrarse como títulos
titleCollectionFieldCollectionFieldInstancia del campo de título

#Métodos comunes

MétodoDescripción
getFields(): CollectionField[]Obtiene todos los campos (incluyendo los heredados)
getField(name: string): CollectionField | undefinedObtiene un solo campo por su nombre
getFieldByPath(path: string): CollectionField | undefinedObtiene un campo por su ruta (admite asociaciones, ej. user.name)
getAssociationFields(types?): CollectionField[]Obtiene campos de asociación; types puede ser ['one'], ['many'], etc.
getFilterByTK(record): anyExtrae el valor de la clave primaria de un registro, utilizado para el filterByTk de la API

#Relación con ctx.collectionField y ctx.blockModel

RequisitoUso recomendado
Colección asociada al contexto actualctx.collection (equivalente a ctx.blockModel?.collection o ctx.collectionField?.collection)
Definición de colección del campo actualctx.collectionField?.collection (la colección a la que pertenece el campo)
Colección de destino de la asociaciónctx.collectionField?.targetCollection (la colección de destino de un campo de asociación)

En escenarios como subtablas, ctx.collection podría ser la colección de destino de la asociación; en formularios o tablas estándar, suele ser la colección vinculada al bloque.

#Ejemplos

#Obtener la clave primaria y abrir una ventana emergente

const primaryKey = ctx.collection?.filterTargetKey ?? 'id';
await ctx.openView(popupUid, {
  mode: 'dialog',
  params: {
    filterByTk: ctx.record?.[primaryKey],
    record: ctx.record,
  },
});

#Iterar a través de los campos para validación o vinculación

const fields = ctx.collection?.getFields() ?? [];
const requiredFields = fields.filter((f) => f.options?.required);
for (const f of requiredFields) {
  const v = ctx.form?.getFieldValue(f.name);
  if (v == null || v === '') {
    ctx.message.warning(`${f.title} es obligatorio`);
    return;
  }
}

#Obtener campos de asociación

const oneToMany = ctx.collection?.getAssociationFields(['many']) ?? [];
// Se utiliza para construir subtablas, recursos asociados, etc.

#Notas

  • filterTargetKey es el nombre del campo de la clave primaria de la colección. Algunas colecciones pueden usar un string[] para claves primarias compuestas. Si no está configurado, comúnmente se utiliza 'id' como alternativa.
  • En escenarios como subtablas o campos de asociación, ctx.collection puede apuntar a la colección de destino de la asociación, lo cual difiere de ctx.blockModel.collection.
  • getFields() fusiona los campos de las colecciones heredadas; los campos locales sobrescriben a los campos heredados con el mismo nombre.

#Relacionado

  • ctx.collectionField: La definición del campo de la colección del campo actual
  • ctx.blockModel: El bloque padre que aloja el JS actual, contiene collection
  • ctx.model: El modelo actual, que puede contener collection