Hoe te kijken naar een route-verandering in Angularjs?

Hoe zou iemand een gebeurtenis op een route veranderen / triggeren?


Antwoord 1, Autoriteit 100%

Opmerking : Dit is een goed antwoord voor een legacy-versie van Angularjs. Zie Deze vraag voor bijgewerkte versies.

$scope.$on('$routeChangeStart', function($event, next, current) { 
   // ... you could trigger something here ...
 });

De volgende gebeurtenissen zijn ook beschikbaar (hun callback-functies nemen verschillende argumenten in):

  • $ TRANDCHANGESUCCESS
  • $ routchangeError
  • $ routeUpdate – If Reloadonsearch eigendom heeft is ingesteld op FALSE

Zie de $ route docs.

Er zijn twee andere ongedocumenteerd evenementen:

  • $ locationChangEstart
  • $ locationChangesuccess

Zie Wat is het verschil tussen $ locationChangesuccess en $ locationChangesTart?


Antwoord 2, Autoriteit 9%

Als u het horloge niet wilt plaatsen in een specifieke controller, kunt u het horloge toevoegen voor het hele aplicatie in het hoekapparaat run()

var myApp = angular.module('myApp', []);
myApp.run(function($rootScope) {
    $rootScope.$on("$locationChangeStart", function(event, next, current) { 
        // handle route changes     
    });
});

Antwoord 3, Autoriteit 3%

$rootScope.$on( "$routeChangeStart", function(event, next, current) {
  //..do something
  //event.stopPropagation();  //if you don't want event to bubble up 
});

Antwoord 4

$rootScope.$on( "$routeChangeStart", function(event, next, current) {
  //if you want to interrupt going to another location.
  event.preventDefault();  });

Antwoord 5

Om een ​​of andere reden werkten de voorgestelde oplossingen niet voor mij met $ TRIDECHANGESTART -evenement

Probeer het:

als u hetzelfde probleem tegenkomt

$scope.$on('$stateChangeStart', function(evt, toState, toParams, fromState, fromParams) { 
   // ... you could trigger something here ...
 });

In mijn configuratie gebruik ik @ UI-Router / Angularjs (A.K.A Angular-UI-router) van Node Package Manager (A.K.A NPM)


Antwoord 6

Dit is voor de totale beginner … zoals ik:

HTML:

 <ul>
    <li>
      <a href="#"> Home </a>
    </li>
    <li>
      <a href="#Info"> Info </a>
    </li>
  </ul>
  <div ng-app="myApp" ng-controller="MainCtrl">
    <div ng-view>
    </div>
  </div>

Angular:

//Create App
var app = angular.module("myApp", ["ngRoute"]);
//Configure routes
app.config(function ($routeProvider) {
    $routeProvider
      .otherwise({ template: "<p>Coming soon</p>" })
      .when("/", {
        template: "<p>Home information</p>"
      })
      .when("/Info", {
        template: "<p>Basic information</p>"
        //templateUrl: "/content/views/Info.html"
      });
});
//Controller
app.controller('MainCtrl', function ($scope, $rootScope, $location) {
  $scope.location = $location.path();
  $rootScope.$on('$routeChangeStart', function () {
    console.log("routeChangeStart");
   //Place code here:....
   });
});

Ik hoop dat dit een totale beginner zoals ik helpt. Hier is het volledige werkende voorbeeld:

<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.min.js"></script>
</head>
<body>
  <ul>
    <li>
      <a href="#"> Home </a>
    </li>
    <li>
      <a href="#Info"> Info </a>
    </li>
  </ul>
  <div ng-app="myApp" ng-controller="MainCtrl">
    <div ng-view>
    </div>
  </div>
  <script>
//Create App
var app = angular.module("myApp", ["ngRoute"]);
//Configure routes
app.config(function ($routeProvider) {
    $routeProvider
      .otherwise({ template: "<p>Coming soon</p>" })
      .when("/", {
        template: "<p>Home information</p>"
      })
      .when("/Info", {
        template: "<p>Basic information</p>"
        //templateUrl: "/content/views/Info.html"
      });
});
//Controller
app.controller('MainCtrl', function ($scope, $rootScope, $location) {
  $scope.location = $location.path();
  $rootScope.$on('$routeChangeStart', function () {
    console.log("routeChangeStart");
   //Place code here:....
   });
});
  </script>
</body>
</html>

Other episodes