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

时间:2017-09-22 15:42:13

标签: javascript angularjs typescript angularjs-directive

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");

});

虽然我是从root广播的,但我无法收听广播事件。谁能帮我? 感谢.....

2 个答案:

答案 0 :(得分:0)

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

相同

控制器1

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

控制器2

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

答案 1 :(得分:0)

值得检查两个控制器的关系。谁是父母,谁是孩子。如果两个控制器并行运行,请检查谁加载第一个。

在您调用$scope.$root.$broadcast("printingForms","my Data");

之后加载第二个控制器可能无法解决的主要原因

此外,即使$scope.$root持有对$rootScope的引用也会更好地使用$rootScope

相关问题