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

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

#ctx.openView()

Abre programaticamente uma visualização especificada (gaveta, diálogo, página incorporada, etc.). Fornecido pelo FlowModelContext, é usado para abrir visualizações ChildPage ou PopupAction configuradas em cenários como JSBlock, células de tabela e fluxos de trabalho.

#Cenários de uso

CenárioDescrição
JSBlockAbre um diálogo de detalhe/edição após o clique em um botão, passando o filterByTk da linha atual.
Célula de tabelaRenderiza um botão dentro de uma célula que abre um diálogo de detalhes da linha ao ser clicado.
Fluxo de trabalho / JSActionAbre a próxima visualização ou um diálogo após uma operação bem-sucedida.
Campo de associaçãoAbre um diálogo de seleção/edição via ctx.runAction('openView', params).

Nota: ctx.openView está disponível em um ambiente RunJS onde existe um contexto FlowModel. Se o modelo correspondente ao uid não existir, um PopupActionModel será criado automaticamente e persistido.

#Assinatura

openView(uid: string, options?: OpenViewOptions): Promise<void>

#Descrição dos parâmetros

#uid

O identificador único do modelo de visualização. Se não existir, será criado e salvo automaticamente. Recomenda-se usar um UID estável, como ${ctx.model.uid}-detail, para que a configuração possa ser reutilizada ao abrir o mesmo diálogo várias vezes.

#Campos comuns de options

CampoTipoDescrição
modedrawer / dialog / embedModo de abertura: gaveta (drawer), diálogo (dialog) ou incorporado (embed). O padrão é drawer.
sizesmall / medium / largeTamanho do diálogo ou gaveta. O padrão é medium.
titlestringTítulo da visualização.
paramsRecord<string, any>Parâmetros arbitrários passados para a visualização.
filterByTkanyValor da chave primária, usado para cenários de detalhe/edição de um único registro.
sourceIdstringID do registro de origem, usado em cenários de associação.
dataSourceKeystringFonte de dados.
collectionNamestringNome da coleção.
associationNamestringNome do campo de associação.
navigationbooleanSe deve usar navegação por rota. Se defineProperties ou defineMethods forem fornecidos, isso é forçado para false.
preventClosebooleanSe deve impedir o fechamento.
definePropertiesRecord<string, PropertyOptions>Injeta propriedades dinamicamente no modelo dentro da visualização.
defineMethodsRecord<string, Function>Injeta métodos dinamicamente no modelo dentro da visualização.

#Exemplos

#Uso básico: Abrir uma gaveta (drawer)

const popupUid = `${ctx.model.uid}-detail`;
await ctx.openView(popupUid, {
  mode: 'drawer',
  size: 'medium',
  title: ctx.t('Detalhes'),
});

#Passando o contexto da linha atual

const primaryKey = ctx.collection?.primaryKey || 'id';
await ctx.openView(`${ctx.model.uid}-1`, {
  mode: 'dialog',
  title: ctx.t('Detalhes da Linha'),
  params: {
    filterByTk: ctx.record?.[primaryKey],
    record: ctx.record,
  },
});

#Abrir via runAction

Quando um modelo está configurado com uma ação openView (como campos de associação ou campos clicáveis), você pode chamar:

await ctx.runAction('openView', {
  navigation: false,
  mode: 'dialog',
  collectionName: 'users',
  filterByTk: ctx.record?.id,
});

#Injetando contexto personalizado

await ctx.openView(`${ctx.model.uid}-edit`, {
  mode: 'drawer',
  filterByTk: ctx.record?.id,
  defineProperties: {
    onSaved: {
      get: () => () => ctx.resource?.refresh?.(),
      cache: false,
    },
  },
});

#Relação com ctx.viewer e ctx.view

FinalidadeUso recomendado
Abrir uma visualização de fluxo configuradactx.openView(uid, options)
Abrir conteúdo personalizado (sem fluxo)ctx.viewer.dialog() / ctx.viewer.drawer()
Operar na visualização aberta no momentoctx.view.close(), ctx.view.inputArgs

ctx.openView abre uma FlowPage (ChildPageModel), que renderiza uma página de fluxo completa internamente; ctx.viewer abre qualquer conteúdo React.

#Observações

  • Recomenda-se associar o uid ao ctx.model.uid (ex: ${ctx.model.uid}-xxx) para evitar conflitos entre múltiplos blocos.
  • Quando defineProperties ou defineMethods são passados, navigation é forçado para false para evitar a perda de contexto após uma atualização.
  • Dentro do diálogo, ctx.view refere-se à instância da visualização atual, e ctx.view.inputArgs pode ser usado para ler os parâmetros passados durante a abertura.

#Relacionado

  • ctx.view: A instância da visualização aberta no momento.
  • ctx.model: O modelo atual, usado para construir um popupUid estável.