logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Visão geral do RunJS
Importando módulos
Renderização no contêiner

Variáveis globais

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 tradução por IA

Este documento foi traduzido por IA. Para informações precisas, consulte a versão em inglês.

#ctx.collection

A instância da coleção (Collection) associada ao contexto de execução atual do RunJS, usada para acessar metadados da coleção, definições de campos, chaves primárias e outras configurações. Geralmente originada de ctx.blockModel.collection ou ctx.collectionField?.collection.

#Casos de Uso

CenárioDescrição
JSBlockA coleção vinculada ao bloco; pode acessar name, getFields, filterTargetKey, etc.
JSField / JSItem / JSColumnA coleção à qual o campo atual pertence (ou a coleção do bloco pai), usada para recuperar listas de campos, chaves primárias, etc.
Coluna de Tabela / Bloco de DetalhesUsada para renderização baseada na estrutura da coleção ou para passar o filterByTk ao abrir popups.

Nota: ctx.collection está disponível em cenários onde um bloco de dados, bloco de formulário ou bloco de tabela está vinculado a uma coleção. Em um JSBlock independente que não esteja vinculado a uma coleção, ele pode ser null. Recomenda-se realizar uma verificação de valor nulo antes do uso.

#Definição de Tipo

collection: Collection | null | undefined;

#Propriedades Comuns

PropriedadeTipoDescrição
namestringNome da coleção (ex: users, orders)
titlestringTítulo da coleção (inclui internacionalização)
filterTargetKeystring | string[]Nome do campo da chave primária, usado para filterByTk e getFilterByTK
dataSourceKeystringChave da fonte de dados (ex: main)
dataSourceDataSourceA instância da fonte de dados à qual pertence
templatestringTemplate da coleção (ex: general, file, tree)
titleableFieldsCollectionField[]Lista de campos que podem ser exibidos como títulos
titleCollectionFieldCollectionFieldA instância do campo de título

#Métodos Comuns

MétodoDescrição
getFields(): CollectionField[]Obtém todos os campos (incluindo os herdados)
getField(name: string): CollectionField | undefinedObtém um único campo pelo nome do campo
getFieldByPath(path: string): CollectionField | undefinedObtém um campo pelo caminho (suporta associações, ex: user.name)
getAssociationFields(types?): CollectionField[]Obtém campos de associação; types pode ser ['one'], ['many'], etc.
getFilterByTK(record): anyExtrai o valor da chave primária de um registro, usado para o filterByTk da API

#Relação com ctx.collectionField e ctx.blockModel

NecessidadeUso Recomendado
Coleção associada ao contexto atualctx.collection (equivalente a ctx.blockModel?.collection ou ctx.collectionField?.collection)
Definição de coleção do campo atualctx.collectionField?.collection (a coleção à qual o campo pertence)
Coleção de destino da associaçãoctx.collectionField?.targetCollection (a coleção de destino de um campo de associação)

Em cenários como sub-tabelas, ctx.collection pode ser a coleção de destino da associação; em formulários/tabelas padrão, geralmente é a coleção vinculada ao bloco.

#Exemplos

#Obter Chave Primária e Abrir Popup

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

#Iterar pelos Campos para Validação ou Vinculação (Linkage)

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} é obrigatório`);
    return;
  }
}

#Obter Campos de Associação

const oneToMany = ctx.collection?.getAssociationFields(['many']) ?? [];
// Usado para construir sub-tabelas, recursos associados, etc.

#Observações

  • filterTargetKey é o nome do campo da chave primária da coleção. Algumas coleções podem usar um string[] para chaves primárias compostas. Se não estiver configurado, 'id' é comumente usado como fallback.
  • Em cenários como sub-tabelas ou campos de associação, ctx.collection pode apontar para a coleção de destino da associação, o que difere de ctx.blockModel.collection.
  • getFields() mescla campos de coleções herdadas; campos locais sobrescrevem campos herdados com o mesmo nome.

#Relacionados

  • ctx.collectionField: A definição do campo de coleção do campo atual
  • ctx.blockModel: O bloco pai que hospeda o JS atual, contendo collection
  • ctx.model: O modelo atual, que pode conter collection