У меня есть вопрос, похожий на этот, но другой.
Здесь я пытаюсь добавить прослушиватель событий для 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
таким образом, что я могу изменить путь?