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.requireAsync()
Next Pagectx.route
Aviso de tradução por IA

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

#ctx.resource

A instância FlowResource no contexto atual, usada para acessar e operar dados. Na maioria dos blocos (Formulários, Tabelas, Detalhes, etc.) e cenários de pop-up, o ambiente de execução pré-vincula o ctx.resource. Em cenários como JSBlock, onde não há um recurso por padrão, você deve primeiro chamar ctx.initResource() para inicializá-lo antes de usá-lo via ctx.resource.

#Cenários de Uso

O ctx.resource pode ser usado em qualquer cenário RunJS que exija acesso a dados estruturados (listas, registros únicos, APIs personalizadas, SQL). Blocos de Formulário, Tabela, Detalhes e pop-ups geralmente já estão pré-vinculados. Para JSBlock, JSField, JSItem, JSColumn, etc., se o carregamento de dados for necessário, você pode chamar ctx.initResource(type) primeiro e depois acessar ctx.resource.

#Definição de Tipo

resource: FlowResource | undefined;
  • Em contextos com pré-vinculação, ctx.resource é a instância do recurso correspondente.
  • Em cenários como JSBlock, onde não há recurso por padrão, ele é undefined até que ctx.initResource(type) seja chamado.

#Métodos Comuns

Os métodos expostos por diferentes tipos de recursos (MultiRecordResource, SingleRecordResource, APIResource, SQLResource) variam ligeiramente. Abaixo estão os métodos universais ou comumente usados:

MétodoDescrição
getData()Obtém os dados atuais (lista ou registro único)
setData(value)Define dados locais
refresh()Inicia uma requisição com os parâmetros atuais para atualizar os dados
setResourceName(name)Define o nome do recurso (ex: 'users', 'users.tags')
setFilterByTk(tk)Define o filtro por chave primária (para get de registro único, etc.)
runAction(actionName, options)Chama qualquer ação do recurso (ex: create, update)
on(event, callback) / off(event, callback)Inscreve/cancela a inscrição em eventos (ex: refresh, saved)

Específicos de MultiRecordResource: getSelectedRows(), destroySelectedRows(), setPage(), next(), previous(), etc.

#Exemplos

#Dados de Lista (requer initResource primeiro)

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

#Cenário de Tabela (pré-vinculado)

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

await ctx.resource.destroySelectedRows();
ctx.message.success(ctx.t('Excluído'));

#Registro Único

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

#Chamando uma Ação Personalizada

await ctx.resource.runAction('create', { data: { name: 'João Silva' } });

#Relação com ctx.initResource / ctx.makeResource

  • ctx.initResource(type): Se ctx.resource não existir, ele cria e vincula um; se já existir, retorna a instância existente. Isso garante que o ctx.resource esteja disponível.
  • ctx.makeResource(type): Cria uma nova instância de recurso e a retorna, mas não a escreve em ctx.resource. Isso é adequado para cenários que exigem múltiplos recursos independentes ou uso temporário.
  • ctx.resource: Acessa o recurso já vinculado ao contexto atual. A maioria dos blocos/pop-ups já está pré-vinculada; caso contrário, será undefined e exigirá ctx.initResource.

#Observações

  • Recomenda-se realizar uma verificação de valor nulo antes do uso: ctx.resource?.refresh(), especialmente em cenários como JSBlock onde a pré-vinculação pode não existir.
  • Após a inicialização, você deve chamar setResourceName(name) para especificar a coleção antes de carregar os dados via refresh().
  • Para a API completa de cada tipo de Recurso, consulte os links abaixo.

#Relacionados

  • ctx.initResource() - Inicializa e vincula um recurso ao contexto atual
  • ctx.makeResource() - Cria uma nova instância de recurso sem vinculá-la ao ctx.resource
  • MultiRecordResource - Múltiplos registros/Listas
  • SingleRecordResource - Registro único
  • APIResource - Recurso de API geral
  • SQLResource - Recurso de consulta SQL