如何在不同目录中的另一个控制器上调用函数?如果控制器是另一个目录,仅仅复制它是不起作用的



所以,我知道这里还有其他解决方案。。。但我的处境有点独特。

第一个控制器,是的,这是一个大型电信公司的AngularJS,有几个独特的$scope变量,不能移动或复制。这个代码是一个消息!

所以,我尝试过:

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

主函数在这里。。。一切都很复杂,但我已经把降低了

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

调用功能:

$rootScope.$emit.CallMainFunction(id);

两个控制器由两个文件夹分隔:

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

我可以提供服务,但这是一个功能失调的应用程序,需要几个星期的时间。这是正确的做法"如果";我在角6-14。

因此,我只能尝试将一个函数调用到另一个控制器中的一个函数。想一想?

假设"sending"控制器是"receiving"控制器的父控制器(通过$rootScope发送(,则可以向下广播事件,然后在它自己的控制器中执行函数。

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

然后在接收控制器中,侦听事件。此外,当控制器卸载时,不要忘记杀死侦听器

//handle SendDown event
var myListener = $scope.$on("callMainFunction", function (evt, data) {
$scope.theMainFunction(data)
});
$scope.$on('$destroy', myListener);

最新更新