当前位置: 首页 > 面试题库 >

提供给routeProvider的调试路由

舒阳州
2023-03-14
问题内容

我是AngularJS的新手,正在尝试调试一些路由,但是我不知道如何显示/查看传递给routeprovider的路由。

例如,如果我当前的路由设置如下:

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

调试时,我想破坏代码,并在控制台日志中输入类似内容;

$routeProvider.path

以显示将由“ .when”评估的路线。


问题答案:

您可以收听发出的多个事件$route service。这些事件是:

  • $routeChangeStart
  • $routeChangeSuccess
  • $routeChangeError
  • 和, $routeUpdate

(我鼓励阅读链接提供的文档,以获取每个文件的描述。)

此时,您可以在一个$scope控制器或指令之一上侦听一个或所有这些事件,或者通过注入$rootScope到您的angular.module().run()函数或另一个服务/工厂中。

例如,作为您提供的代码的附录:

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

您还可以访问其余的$routeProvider对象,例如current.templateUrlnext.controller

有关redirectTo的注意事项: 使用$route service事件有一个对象异常,那就是存在重定向时。在这种情况下,next.originalPath将是undefined,因为您所拥有的只是redirectTo您在中定义的属性otherwise()。您将永远不会看到用户尝试访问的路由。

因此,您可以收听或事件:$location service's
$locationChangeStart``$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);
    });
  }
]);

如果使用HTML5Mode,则$locationChange*事件将提供其他两个参数。这些是newStateoldState

总之,侦听$route*事件可能是调试中提供的对象和定义的最佳选择$routeProvider。但是,如果您需要查看所有尝试的URL,$locationChange*则将需要侦听事件。

截至 AngularJS 1.3.9版本



 类似资料:
  • 问题内容: 我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试使我的应用程序启动并运行。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容: 在app.js中,我具有以下内容: 当我运行此应用程序时,出现以下错误: 我已经阅读了其他一些回答,例如1)注入’ngrou

  • 当我在浏览器上运行我的应用程序时,我的控制台中出现以下错误。 警告:失败的propType:为“Route”提供的prop“component”无效。 我目前正在使用以下开发需求的版本 这就是我的路由文件的外观。 这就是我的主js的样子 请问这个错误是从哪里来的?我该如何解决这个问题?

  • 下面是我的app.js文件 下面是我的状态文件 我有一个模板,我想从那里导航到下一个状态 但是只要我点击这个锚标签,它就会把我导航回主页。(不去我打算去的州)。主要问题是URL(我猜)任何帮助都会很感激。

  • 问题内容: 从AngularJS 1.0.7 升级到 1.2.0rc1 时收到此错误。 问题答案: ngRoute模块不再是核心文件的一部分。如果继续使用$ routeProvider,则现在需要在HTML中包括: API参考 您还必须为您的应用程序添加依赖项: 相反,如果您打算使用或类似方法,则只需 从模块中删除依赖项,然后将其替换为相关的选择提供者(例如)。然后,您将使用依赖项:

  • 我正在使用SpringRunner运行JUnit mockito测试用例,下面是类,我试图编写测试用例,但得到空对象 //Junit测试用例 但是下面的代码即使在模拟这个之后仍然返回空值,你能帮助如何模拟这个吗? 注意:只有Mockito需要使用无powermockito

  • 我使用了test dat provider和factory来处理示例数据,更像是从具有多个值的excel行中读取数据。因此,每个映射表示每行的列名和值,并将其添加到列表中,以获得从excel读取的所有值。现在我返回