AngularJS - зачем мне нужно $ scope. $ Apply в пределах $ scope. $ On?

У меня есть код, который ведет себя не так, как ожидалось ... У меня есть слушатель событий в контроллере AngularJS, как это:

$scope.$on("newClipSelected", function(e) {
    $scope.$apply(function() {
        $scope.isReady = true;
    });
});

В разметке контроллера есть ng-show = 'isReady'. Когда этот обработчик событий выполняется, область ng-show отображается, как и ожидалось. Однако этот обработчик событий не работает:

$scope.$on("newClipSelected", function(e) {
    $scope.isReady = true;
});

С этим обработчиком событий, если я использую отладчик, чтобы ожидать область AngularJS, я вижу, что $ scope.isReady = true, однако элемент ng-show не отображается.

Я понимаю, что $ scope. $ On на самом деле вызовет $ watch / $ apply соответствующим образом. Так почему же мне нужно вызвать $ apply в этом случае?

Событие инициируется вызовом $ rootScope. $ Broadcast () в рамках неангулярного события асинхронного завершения JS.

Ответы на вопрос(2)

Ваш ответ на вопрос