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

位置更改时如何获取路线名称?

东门俊智
2023-03-14
问题内容

我定义了一些路线:

angular.module('myApp', [])
  .config('$routeProvider', function($routeProvider) {
    $routeProvider.when('/aaa', { templateUrl: '/111.html' })
                  .when('/bbb', { templateUrl: '/222.html'});
  });

而且我想在用户更改路线时获取路线名称:

angular.module('myApp')
  .run(['$rootScope', function($rootScope) {
    $rootScope.$on('$routeChangeSuccess', function(scope, current, pre) {
      // how to get current route name, e.g. /aaa or /bbb
      console.log('Current route name: ' + ???);
    }
  }]);

但是我不知道该怎么办。我可以获取templateUrl,但不能获取路线名称。

更新

一个更复杂的用例:

$routeProvider.when('/users/:id', { templateUrl: '/show_user.html' })

如果当前路径是:

/users/12345

它应该匹配/users/:id,但是我如何知道匹配的路由并获取路由名称/users/:id


问题答案:

您可以注入$ location服务并利用其path()函数。

angular.module('myApp')
  .run(['$rootScope','$location', '$routeParams', function($rootScope, $location, $routeParams) {
    $rootScope.$on('$routeChangeSuccess', function(e, current, pre) {
      console.log('Current route name: ' + $location.path());
      // Get all URL parameter
      console.log($routeParams);
    });
  }]);

您可以在文档中找到其他有用的$
location方法

更新

如果您想拥有当前路由参数的数组,只需像上面一样注入$ routeParams服务即可。



 类似资料:
  • 问题内容: 示例应用程序: http //angular.github.com/angular- phonecat/step-11/app/#/phones 如果您选择最后一个手机“ Motorola charm”,它将为您显示手机的详细信息。当您在浏览器上浏览时,它将重新加载数据,并且滚动条位于顶部。 导航返回时,自动滚动到剩余位置的最佳方法是什么?而且,为什么角度重新加载数据? 我的计算机上有

  • 问题内容: 在Laravel v4中,我能够使用…获得当前的路线名称。 我如何在 Laravel v5 和 Laravel v6中 做到这 一点 ? 问题答案: 尝试这个 要么 从v5.1起 Laravel v5.2 或者如果您需要动作名称 Laravel 5.2路线文档 检索请求URI path方法返回请求的URI。因此,如果传入请求的目标是,则path方法将返回: 该方法使您可以验证传入的请求

  • 当前文档只讨论获取路由参数,而不是实际的路由段。 例如,如果我想找到当前路由的父级,怎么可能?

  • 问题内容: 目前我在下面安装了rvm 如何将rvm移到该位置? 我尝试使用rvmrc文件来解决此问题(根据此处的rvm文档:https ://rvm.io/workflow/rvmrc/ ),但是没有运气,我在下面找到了一个文件 我可以遵循任何分步说明吗? 问题答案: 通过在线研究找出自己,希望这可以帮助某人: 假设您要从移至 更新您或更新为: 找到您的under ,如果找不到,创建一个并在其中添

  • 我开始学gradle了。然而,当我与格拉德尔一起打造Spring;它将依赖项jar下载到 有没有办法指定Gradle将依赖项jar下载到特定位置?就像我可以在Maven中指定存储库位置一样。 系统信息:Windows 7 64位Gradle 1.0版

  • 问题内容: 如何在AngularJs中取消路线更改事件? 我当前的代码是 即使验证失败,Angular也会提取下一个模板和关联的数据,然后立即切换回上一个视图/路线。如果验证失败,我不希望angular提取下一个模板和数据,理想情况下应该没有window.history.back()。我什至尝试过event.preventDefault()但没有用。 问题答案: 代替使用 这是angularjs专