Javascript 如果我的路由提供程序中存在条件
在我的Javascript 如果我的路由提供程序中存在条件,javascript,angularjs,Javascript,Angularjs,在我的$routeProvider中,我有这样的东西 $routeProvider.when('/person/:name/:label', { ... 我想做的是添加一个特殊的案例,如果:name,例如,等于'John',它将帮助我显示一个不同的模板 我试着用这样的方法: $routeProvider.when('/person/:name/:label', { templateUrl: function(param) { if(param=='John') { re
$routeProvider
中,我有这样的东西
$routeProvider.when('/person/:name/:label', { ...
我想做的是添加一个特殊的案例,如果:name
,例如,等于'John',它将帮助我显示一个不同的模板
我试着用这样的方法:
$routeProvider.when('/person/:name/:label', {
templateUrl: function(param) {
if(param=='John') {
return 'john.html';
}
return 'generic.html';
},
controller: 'PersonCtrl'
});
不过,我一直得到
generic.html
。如何访问name变量并解决此问题?传递到templateUrl函数的params对象是access,就像$routeParams一样。因此,正如在$routeParams中一样,您需要使用点运算符访问配置的属性。所以在您的例子中,它是params.name
$routeProvider.when('/person/:name/:label', {
templateUrl: function(params) {
return params.name == 'John' ? 'john.html' : 'generic.html';
},
controller: 'PersonCtrl'
});
尝试按以下方式添加routeParams
.config(['$routeProvider','$routeParams',函数($routeProvider,$routeParams){
会给我一个错误:[$injector:unpr]未知提供程序:$routeParams
错误。我看到您在注释后将其标记为正确,一切正常吗?您不需要使用$routeParams
对象访问templateUrl
函数中的参数。根据,templateUrl函数将传递一个提供的参数数组,因此您只需要params.name
。不,我仍然有问题。但这可能与我尝试导入RouteParam的方式有关,因此我的错误,而不是您的错误。@MyKwill您确实是对的,您可以通过这种方式访问各种路由参数。使用param.name
而不是param
,您应该很乐意。