【发布时间】:2012-09-13 12:32:06
【问题描述】:
我可以在 AngularJS 中设置路由参数的默认值吗?有没有办法让/products/123 和/products/ 由同一条路线处理?
我希望重构我现有的代码,如下所示:
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;
}
它有效,但它不是很优雅。有没有更好的办法?
【问题讨论】:
-
不熟悉angularJS,但是
var param ={templateUrl: 'products.html', controller: ProductsCtrl}; $routeProvider.when('/products/', param).when('/products/:productId', param)呢? -
您可以通过以下方式简化控制器代码: $scope.productId = $routeParams.productId || 123;
-
@Gloopy 如果 productId == 0 不是有效的 id,这当然可以工作
-
谢谢大家,这确实使它有点短。只是默认参数是否可以使用的问题...... ;)
-
别忘了
ProductsCtrl.$inject = ['$scope', '$routeParams'];。
标签: javascript angularjs model-view-controller url-routing