Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
Los métodos addDiagramListener y removeDiagramListener nunca se llaman en gojs

Espero que todos estéis bien!! Estoy enfrentando algunos problemas al llamar al evento Diagram. Aquí estoy publicando algunos casos de uso que no funcionaron para mí y lo que funcionó.

CASO I) No funcionó: llamar a addDiagramListener y removeDiagramListener uno tras otro para la misma referencia de función "setLayout" no funcionó. Ninguno de ellos o ambos addDiagramListener o removeDiagramListener fueron despedidos.

 export class DiagramListenerTestClass { execute(context: any): any { let diagram = context.diagram; diagram.layout = new go.ForceDirectedLayout; diagram.addDiagramListener("LayoutCompleted", setLayout); diagram.removeDiagramListener("LayoutCompleted", setLayout); } } // Define outside the class var setLayout = function (event) { event.diagram.layout = new go.Layout(); console.log("Method called!!"); }

CASO II) Funcionó: Llamar a removeDiagramListener después de algún setTimeout, disparó addDiagramListener y removeDiagramListener.

 export class DiagramListenerTestClass { execute(context: any): any { let diagram = context.diagram; diagram.layout = new go.ForceDirectedLayout; diagram.addDiagramListener("LayoutCompleted", setLayout); setTimeout(() => { diagram.removeDiagramListener("LayoutCompleted", setLayout) }, 100); } } // Define outside the class var setLayout = function (event) { event.diagram.layout = new go.Layout(); console.log("Method called!!"); }

Nota: No estoy seguro de la razón por la que funcionó el caso II y no el CASO I. Lo que asumo para la ejecución exitosa del CASO II es que: "las llamadas para addDiagramListener y removeDiagramListener fueron tan rápidas que antes de que la función addDiagramListener 'setLayout' se llamado, el oyente es eliminado por 'removeDiagramListener' ". Entonces, para que la función se ejecute con éxito, llamé a 'removeDiagramListener' con un setTimeout de 100ms.

Por favor, déjame corregir si hay algo que no está bien. ¡Sus sugerencias serían muy útiles y apreciadas! ¡¡Gracias por adelantado!!

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda