我在广播和收听活动中遇到问题
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
会更好
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