If条件在我的路由提供程序中

If condition inside my route provider

本文关键字:程序 路由 我的路 条件 我的 If      更新时间:2023-09-26

在我的$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对象就像$routeParams一样可以访问。因此,就像在$routeParams中所做的那样,您需要使用点操作符来访问所配置的属性。在你的例子中,它是params.name

$routeProvider.when('/person/:name/:label', {
  templateUrl: function(params) {
    return params.name == 'John' ? 'john.html' : 'generic.html';
  },
  controller: 'PersonCtrl'
});