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广播的,但我无法收听广播事件。谁能帮我? 感谢.....
答案 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