Angular $ location.path funktioniert nicht

Ich habe eine ähnliche Frage wiedieses, aber anders.

Hier versuche ich, einen Ereignis-Listener für a hinzuzufügenwindow.postMessage Handler.

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
  });
});

Das$location.path wird von Angular nicht erkannt.

Die andere Frage besagt, dass ich anrufen soll$apply() über den Umfang, aber der einzige Bereich, der mir zur Verfügung steht, ist$rootScope und anrufen$apply() das scheint nicht zu funktionieren.

Ein Kommentar zu der Antwort deutet darauf hin, dass ein Bereich mit erhalten werden kann

$scope = angular.element(document).scope()

aber das gibt mir die$rootScope, was nicht geht.

Wie bekomme ich eckig, um die Änderung in zu erfassen?$location.path()? Gibt es eine bessere Möglichkeit, sich zu registrieren?message Rückruf so wie ich den Pfad ändern kann?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage