0

我必須提供兩種類型的網址:/:culture/:author,其中都有一級網址參數。雖然文化是一組預定義的參數,如enes,en-us,br,fr,it等,作者可以是來自db的任何用戶名(文化名稱除外)。所以我想讓參數在一組文化中發送給HomeCtrl的路由,如果不是,它會發送給AuthorCtrl。我能做什麼?如何設置角度路由參數的接受值?

.when('/:culture/', { 
    templateUrl:'partials/home/home', 
    controller:'vvHomeCtrl' 
}); 

回答

1

您可以定義templateUrl和控制器的功能,使這樣的路線:

.when('/:cultureOrAuthor/', { 
    templateUrl: function(params) { 
     // AVAILABLE_CULTURES is your predefined array 
     if(AVAILABLE_CULTURES.indexOf(params['cultureOrAuthor'])!==-1) { 
      return 'urlForCultures'; 
     } else { 
      return 'urlForAuthors'; 
     } 
    }, 
    controller: function($scope, $routeParams) { 
     if(AVAILABLE_CULTURES.indexOf($routeParams['cultureOrAuthor'])!==-1) { 
      // first logic 
     } else { 
      // second logic 
     } 
    } 
}); 

這是一個簡單的控制器一個很好的解決方案。否則,請考慮使用來自路由器的解決方案(docs)。

+0

謝謝它適合我。 –

1

我同意@Mates解決方案,通過檢查文化參數是否有效。但是,我可能會嘗試使用redirectTo屬性來分隔兩條路線。

.when('/:culture/', { 
    templateUrl:'partials/home/home', 
    controller:'vvHomeCtrl', 
    redirectTo:function(routeParams, path, search) { 
     if(cultures.indexOf(routeParams.culture)!==-1) { 
      //return path(string) to author route 
     } 
     return path; 
    } 
}) 
.when(/* Author route definition */);