我在另一个SO问题中找到了这个answer。但我还想在一些页面标题中使用路由参数。
如果我有$routeProvider
这样的话:
$routeProvider.when('/demo/:name/:idNumber', {title : ' - :name', templateUrl: 'partials/details.html', controller: 'AppDetails'});
如何将标题中的:name
与该位置的:name
相匹配?我尝试了以下
.run(['$location', '$rootScope', '$routeParams', function($location, $rootScope, $routeParams) {
$rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
if(current.$$route.title.contains(":")){
//Not sure how to get the route param using the title param string
}else{
$rootScope.title = current.$$route.title;
}
});
}]);
但我不知道如何使用字符串从routeParams获取变量。
答案 0 :(得分:2)
你不能像这样访问它:
$routeParams[$routeParams.title]
我认为这就是你所要求的,但我不太确定......
答案 1 :(得分:2)
在routeChangeSuccess处理程序中,我添加了
var title = currentRoute.$$route.title;
if (title && $routeParams){
for(var paramName in $routeParams) {
title = title.replace(new RegExp(':' + paramName, 'g'), $routeParams[paramName]);
}
}
$rootScope.title = title;