2016-11-22 58 views
1

如何访问setTitle匿名函数中的url?基于url的角度路由提供者设置页面标题

我在Angular的路由设置中有类似下面的内容。大多数路线指向相同的控制器,但控制器存在一些差异,但本质上问题是重复路线。所以我想移动到表中只有一个条目的东西,但需要更改SetWindowTitle以根据url参数设置标题。我所显示的代码不起作用,因为producttype var未定义。

当前代码:

.config(['$routeProvider', 
    function ($routeProvider) { 

    $routeProvider 
     .when('/mypage/round', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product round') 
       } 
      }, 
     }) 
     .when('/mypage/square', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product square') 
       } 
      }, 
     }) 
    // etc... 

想要的东西,如:

$routeProvider 
     .when('/mypage/:producttype', { 
      templateUrl: 'product', 
      controller: 'productController', 
      resolve: { 
       setTitle: function() { 
        SetWindowTitle('product ' + producttype) 
       } 
      }, 
     }) 

回答

1

我们可以通过注射 '$路线' 访问路径URL的决心功能。 以下是你需要做的:

$routeProvider 
    .when('/mypage/:producttype', { 
     templateUrl: 'product', 
     controller: 'productController', 
     resolve: { 
      setTitle: function($route) { 
       SetWindowTitle('product ' + $route.current.params.producttype) 
      } 
     }, 
    }) 

$ route.current - 包括所有当前的路由URL细节,如控制器,原始路径,路径,模板URL等

+0

谢谢 - 效果很好,请注意,当我尝试它时会因缩小而破坏。希望你不要介意,我更新了你的答案来掩盖这一点。 – miltonb

+0

你的欢迎,是的,你需要把它放在阵列中应该是实际的做法,但不得不通过改变你的代码片段给你的答案,所以跳过它。 –