Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!