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

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

#ctx.blockModel

El modelo del bloque padre (instancia de BlockModel) donde se encuentra el campo JS o bloque JS actual. En escenarios como JSField, JSItem y JSColumn, ctx.blockModel apunta al bloque de formulario o bloque de tabla que contiene la lógica JS actual. En un JSBlock independiente, puede ser null o el mismo que ctx.model.

#Escenarios de uso

EscenarioDescripción
JSFieldAcceder a form, colección y resource del bloque de formulario padre dentro de un campo de formulario para implementar vinculación o validación.
JSItemAcceder a la información del recurso y de la colección del bloque de tabla o formulario padre dentro de un elemento de subtabla.
JSColumnAcceder al resource (por ejemplo, getSelectedRows) y a la colección del bloque de tabla padre dentro de una columna de tabla.
Acciones de formulario / Flujo de trabajoAcceder a form para validación previa al envío, resource para actualizar, etc.

Nota: ctx.blockModel solo está disponible en contextos de RunJS donde existe un bloque padre. En bloques JSBlock independientes (sin un formulario o tabla padre), puede ser null. Se recomienda realizar una comprobación de nulidad antes de su uso.

#Definición de tipos

blockModel: BlockModel | FormBlockModel | TableBlockModel | CollectionBlockModel | DataBlockModel | null;

El tipo específico depende del tipo de bloque padre: los bloques de formulario suelen ser FormBlockModel o EditFormModel, mientras que los bloques de tabla suelen ser TableBlockModel.

#Propiedades comunes

PropiedadTipoDescripción
uidstringIdentificador único del modelo de bloque.
collectionCollectionLa colección vinculada al bloque actual.
resourceResourceLa instancia de recurso utilizada por el bloque (SingleRecordResource / MultiRecordResource, etc.).
formFormInstanceBloque de formulario: Instancia de Ant Design Form, compatible con getFieldsValue, validateFields, setFieldsValue, etc.
emitterEventEmitterEmisor de eventos, utilizado para escuchar formValuesChange, onFieldReset, etc.

#Relación con ctx.model y ctx.form

NecesidadUso recomendado
Bloque padre del JS actualctx.blockModel
Leer/escribir campos de formularioctx.form (equivalente a ctx.blockModel?.form, más conveniente en bloques de formulario)
Modelo del contexto de ejecución actualctx.model (Modelo de campo en JSField, modelo de bloque en JSBlock)

En un JSField, ctx.model es el modelo de campo y ctx.blockModel es el bloque de formulario o tabla que contiene ese campo; ctx.form suele ser ctx.blockModel.form.

#Ejemplos

#Tabla: Obtener filas seleccionadas y procesar

const rows = ctx.blockModel?.resource?.getSelectedRows?.() || [];
if (rows.length === 0) {
  ctx.message.warning('Por favor, seleccione datos primero');
  return;
}

#Escenario de formulario: Validar y actualizar

if (ctx.blockModel?.form) {
  await ctx.blockModel.form.validateFields();
  await ctx.blockModel.resource?.refresh?.();
}

#Escuchar cambios en el formulario

ctx.blockModel?.emitter?.on?.('formValuesChange', (payload) => {
  // Implementar vinculación o redibujado basado en los últimos valores del formulario
});

#Activar el redibujado (re-render) del bloque

ctx.blockModel?.rerender?.();

#Notas

  • En un JSBlock independiente (sin un bloque de formulario o tabla padre), ctx.blockModel puede ser null. Se recomienda utilizar el encadenamiento opcional (optional chaining) al acceder a sus propiedades: ctx.blockModel?.resource?.refresh?.().
  • En JSField / JSItem / JSColumn, ctx.blockModel se refiere al bloque de formulario o tabla que contiene el campo actual. En un JSBlock, puede ser él mismo o un bloque de nivel superior, dependiendo de la jerarquía real.
  • resource solo existe en bloques de datos; form solo existe en bloques de formulario. Los bloques de tabla normalmente no tienen un form.

#Relacionado

  • ctx.model: El modelo del contexto de ejecución actual.
  • ctx.form: Instancia de formulario, comúnmente utilizada en bloques de formulario.
  • ctx.resource: Instancia de recurso (equivalente a ctx.blockModel?.resource, úselo directamente si está disponible).
  • ctx.getModel(): Obtener otros modelos de bloque por UID.