我在广播和收听活动中遇到问题

I am getting issue in broadcasting and listening event

First.js

scope.menuItemClick = function (def, callbackText, keepMenuOpen) {

  console.log(def);

  if(def.automationId === "Print"){

  console.log("before broadcast");

  $scope.$root.$broadcast("printingForms","my Data");

  console.log("after broadcast");

}

Second.js

$scope.$on("printingForms",(event, data) => {

  console.log(data);

  console.log("listening");

});

虽然我正在从根广播,但我无法收听广播事件。谁能帮我? 谢谢.....

您应该使用 $rootScope 广播事件。只需在您的控制器上注入 $rootScope$scope

相同

控制器 1

$rootScope.$broadcast("printingForms","my Data");

控制器 2

$rootScope.$on("printingForms",function(event, data){
    console.log(data);
});

值得检查您的 2 个控制器的关系。谁是 parent,谁是 child。如果两个控制器 运行 并行,检查谁加载第一个。

它可能不起作用的主要原因是您在调用 $scope.$root.$broadcast("printingForms","my Data");

后加载了第二个控制器

此外,即使 $scope.$root 持有对 $rootScope 的引用,使用 $rootScope

会更好