Peut angularjs routes ont des valeurs de paramètre par défaut?

Puis-je définir une valeur par défaut d'un paramètre d'un itinéraire dans AngularJS? Est-il un moyen d'avoir /products/123 et /products/ gérée par le même itinéraire ?

Je suis à la recherche de refactorisation de code existant, ce qui ressemble à:

myModule.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
     when('/products/', {templateUrl: 'products.html', controller: ProductsCtrl}).            
     when('/products/:productId', {templateUrl: 'products.html', controller: ProductsCtrl})
}]);


function ProductsCtrl($scope, $routeParams) {
    $scope.productId = typeof($routeParams.productId) == "undefined" ? 123 : $routeParams.productId;
}

Cela fonctionne, mais il n'est pas très élégant. Est-il un meilleur moyen ?

  • Pas familier avec angularJS, mais qu'en est var param ={templateUrl: 'products.html', controller: ProductsCtrl}; $routeProvider.when('/products/', param).when('/products/:productId', param)?
  • Vous pouvez simplifier votre contrôleur de code un peu avec: $champ d'application.productId = $routeParams.productId || 123;
  • bien sûr, cela fonctionne si productId == 0 n'est pas une pièce d'identité valide
  • Bon appel @Liviu
  • Merci les gars, cela fait un peu plus court. Juste la question de savoir si les paramètres par défaut sont possibles pour aller... 😉
  • N'oubliez pas ProductsCtrl.$inject = ['$scope', '$routeParams'];.
  • $scope.productId = $routeParams.productId || 123; devrait fonctionner

InformationsquelleAutor mikel | 2012-09-21