routeprovider route angularjs angularjs-routing

angularjs - Ruta de depuración proporcionada a routeProvider



ngroute angular 1 (1)

Puede escuchar múltiples eventos emitidos por el $route service . Estos eventos son:

  • $routeChangeStart
  • $routeChangeSuccess
  • $routeChangeError
  • y, $routeUpdate

(Recomendaría leer los documentos proporcionados por el enlace para las descripciones de cada uno).

En este punto, puede escuchar uno o todos estos eventos en el $scope de uno de sus controladores o directivas, o inyectando $rootScope en su función angular.module().run() u otro servicio / fábrica.

Por ejemplo, como un anexo a su código provisto:

reportFormsApp.config(function ($routeProvider) { $routeProvider .when("/Reporting", { templateUrl: "ReportForm/rfTemplate.html", controller: "rfController" }) .when("/Dashboard", { templateUrl: "DashboardForm/dfTemplate.html", controller: "dfController" }) .when("/Analysis", { templateUrl: "AnalysisForm/afTemplate.html", controller: "afController" }) .otherwise({ redirectTo: "/Reporting" }) }); reportFormsApp.run([ ''$rootScope'', function($rootScope) { // see what''s going on when the route tries to change $rootScope.$on(''$routeChangeStart'', function(event, next, current) { // next is an object that is the route that we are starting to go to // current is an object that is the route where we are currently var currentPath = current.originalPath; var nextPath = next.originalPath; console.log(''Starting to leave %s to go to %s'', currentPath, nextPath); }); } ]);

También puede acceder al resto de sus objetos $routeProvider , como next.controller o next.controller .

Nota sobre redirectTo: hay una excepción de objeto para usar los eventos del $route service y es cuando hay una redirección. En este caso, next.originalPath no estará definido porque todo lo que tendrá será la propiedad redirectTo que definió de otherwise() . Nunca verás la ruta a la que el usuario intentó acceder.

Por lo tanto, puede escuchar los eventos $locationChangeStart o $locationChangeSuccess $location service''s $locationChangeSuccess :

reportFormsApp.run([ ''$rootScope'', function($rootScope) { // see what''s going on when the route tries to change $rootScope.$on(''$locationChangeStart'', function(event, newUrl, oldUrl) { // both newUrl and oldUrl are strings console.log(''Starting to leave %s to go to %s'', oldUrl, newUrl); }); } ]);

Si usa HTML5Mode, habrá otros dos argumentos proporcionados por los eventos $locationChange* . Esos son newState y oldState .

En conclusión, escuchar los eventos $route* probablemente sea su mejor apuesta para depurar los objetos y definiciones que proporcione en su $routeProvider . Sin embargo, si necesita ver todos los intentos de url, los eventos $locationChange* deberán ser escuchados.

Corriente a partir de AngularJS 1.3.9

Soy nuevo en AngularJS y estoy intentando depurar algunas de mis rutas pero no sé cómo mostrar / ver la ruta que se pasa al proveedor de rutas.

Por ejemplo, si mi enrutamiento actual está configurado de la siguiente manera;

reportFormsApp.config(function ($routeProvider) { $routeProvider .when("/Reporting", { templateUrl: "ReportForm/rfTemplate.html", controller: "rfController" }) .when("/Dashboard", { templateUrl: "DashboardForm/dfTemplate.html", controller: "dfController" }) .when("/Analysis", { templateUrl: "AnalysisForm/afTemplate.html", controller: "afController" }) .otherwise({ redirectTo: "/Reporting" }) });

Al depurar quiero romper el código y, en el registro de la consola, ingrese algo como;

$routeProvider.path

para visualizar la ruta como sería evaluada por el ".when".