Angular $ routeParams - 混合参数和文本?

时间:2014-11-05 17:41:50

标签: angularjs angular-routing

我希望有这样的路线:

/products/1-bananas
/products/2-apples
/products/3-oranges
...
/products/25-television
/products/26-router

是否可以将参数ID与文本混合在一起?我会以一种方式使用它来获取pageload上的productID,并查询数据库以获取相关信息。

我知道这样做的方法(有效)将是这样的:

/products/1/bananas

可以设计为如此的路线:

/products/:productId/:productName

但我觉得这是第一种方式,ID和名称在同一个字符串中,并用短划线分隔,看起来更清晰。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

我会提醒您避免发明新模式并将其用于现有模式。虽然您可能认为连字符更具可读性,但角度路径基于RESTful设计原则。已建立的模式资源/ id /关系更具可扩展性和可理解性。您可以想象,当您开始介绍其他类型的苹果或电视,甚至是不同的制造商和农民时,您的情景会多快失控。

如果你坚持你指定的方法,你可以设置你的路线和资源:

 .when('/products/:id-:name', {
     templateUrl: '/assets/angular/templates/products.html',
      controller: 'ProductCtrl'
 })

.factory('Product', ['$resource',
    function($resource) {
        return $resource('/products/:id-:name', {});
    }
])

连字符只是一个字符,它没有特殊含义所以你可以使用它。有了这个,你应该能够按照自己的方式进入路线参考。