Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

246
Vistas
¿Cómo puedo llamar a una función en otro controlador en un directorio diferente de un controlador en otro directorio donde simplemente copiarlo no funcionará?

Entonces, sé que hay otras soluciones aquí... pero mi situación es única.

El primer controlador, y sí, esto está en AngularJS para una gran empresa de telecomunicaciones, tiene varias variables $scope únicas que no se pueden mover ni copiar. ¡Este código es un DESORDEN!

Entonces, he intentado:

 $rootScope.CallMainFunction, (incomingData) => { $scope.mainFunction(incomingData); };

y la función principal está aquí... todo complejo pero lo he simplificado

 $scope.mainFunction = (data) => { --- Do lots of stuff here with lots of variables NOT available anywhere else }

La función de llamada:

 $rootScope.$emit.CallMainFunction(id);

Los dos controladores están separados por dos carpetas:

 --- MODULES (just the name of the directory) ---| folder 1 ---| folder 2 ---| folder 3 ---| folder 50 <-- YEAH there are this many.

PODRÍA hacer un servicio, pero esta es una aplicación tan disfuncional que llevará semanas. Esa es la forma CORRECTA de hacerlo "SI" estaba en Angular 6 - 14.

Entonces, me quedo con tratar de llamar a una función a una función dentro de otro controlador. ¿Pensamientos por favor?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Suponiendo que el controlador 'enviador' es un padre del controlador 'receptor' (ya que se envía a través de $rootScope), puede transmitir el evento y luego ejecutar la función en su propio controlador.

 //broadcast the event down $rootScope.CallMainFunction = function (someData) { $scope.$broadcast("callMainFunction", someData); }

Luego, en el controlador receptor, escuche el evento. Además, no olvides matar al oyente cuando el controlador se descargue.

 //handle SendDown event var myListener = $scope.$on("callMainFunction", function (evt, data) { $scope.theMainFunction(data) }); $scope.$on('$destroy', myListener);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda