как мне использовать $ rootScope. $ emit и $ root .Scope.On? - PullRequest
0 голосов
/ 09 апреля 2020

У меня $rootScope.$emit в моем первом контроллере и $rootScope.$on во втором контроллере для прослушивания при выполнении $emit.

При отладке я вижу, что слушатель не существует, он существует только в другом контроллере.

Что я делаю не так?

app.controller("Controlador", function ($scope, $window, baseServicio, $rootScope) {

    $rootScope.$on("Example", function(event) {
        console.log("hola");
    });    
});

app.controller("otherControlador", function ($scope, $window, myservicio, $timeout, $rootScope) {
    $rootScope.$emit("Example");    
});

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Поместите слушателя в $ scope:

app.controller("Controlador", function ($scope, $window, baseServicio, $rootScope) {    
    ̶$̶r̶o̶o̶t̶S̶c̶o̶p̶e̶.̶$̶o̶n̶(̶"̶E̶x̶a̶m̶p̶l̶e̶"̶,̶ ̶f̶u̶n̶c̶t̶i̶o̶n̶(̶e̶v̶e̶n̶t̶)̶ ̶{̶
    $scope.$on("Example", function(event) {
        console.log("hola");
    });    
});

И $ Broadcast от $ rootScope:

app.controller("otherControlador", function ($scope, $window, myservicio, $timeout, $rootScope) {
    ̶$̶r̶o̶o̶t̶S̶c̶o̶p̶e̶.̶$̶e̶m̶i̶t̶(̶"̶E̶x̶a̶m̶p̶l̶e̶"̶)̶;̶
    $rootScope.$broadcast("Example");    
});

Для получения дополнительной информации см.

0 голосов
/ 09 апреля 2020

В вашем коде нет ничего плохого, убедитесь, что ваш «Controlador» вызывается первым, чтобы зарегистрировать событие $ rootScope. $ On. После этого, когда вызывается «otherControlador», он вызывает $ emit, а затем $ on прослушивает $ rootScope. $ Emit («Example»).

...