У меня есть вопрос, похожий на этот, но другой.
Здесь я пытаюсь добавить прослушиватель событий для window.postMessage обработчик.
app.run(function ($location, $window, $rootScope) {
$window.addEventListener('message', function(e) {
$location.path("/abc");
console.log($location.path()); // this prints "/abc" as expected
$rootScope.$apply(); // this has no effect
$scope = angular.element(document).scope(); // this is the same as $rootScope
$scope.$apply(); // so this also has no effect
});
});
$location.path не распознается Angular.
В другом вопросе говорится, что я должен называть $apply() в области видимости, но доступная мне только область $rootScope и вызов $apply() на этом не работает.
Комментарий к ответу предполагает, что область может быть получена с помощью
$scope = angular.element(document).scope()
но это дает мне $rootScope, который не работает.
Как мне получить angular, чтобы изменить изменения в $location.path()? Есть ли лучший способ зарегистрировать обратный вызов message таким образом, что я могу изменить путь?