我们有一个拥有多主机设置的电子商务网站。此外,还添加了一个额外的层次结构,其中商店属于一个帐户。
我们使用URL定义范围,以便在访问以下URL时。它将显示该帐户的所有商店的订单。
http://somehost.com/#/orders
查看特定商店的订单。该URL的前缀为“shop /”加上商店ID,如下所示:
http://somehost.com/#/shop/1/orders
http://somehost.com/#/shop/2/orders
我的问题是如何设置路由器。我已将其设置如下,以处理帐户级别的网址,但我不想复制下面的代码,只是为了定义商店网址的网址。任何想法如何实现上述目标?
angular.module('myApp', ['ui-router'])
.config(function($stateProvider) {
$stateProvider
.state('orders', {
url: '/orders',
template: 'views/order.html'
controller: 'OrdersCtrl'
})
.state('orders.view', {
url: '{order_id:[0-9]{1,6}}'
});
});
答案 0 :(得分:0)
我使用params选项解决了问题:
angular.module('myApp', ['ui-router'])
.config(function($stateProvider) {
$stateProvider
.state('root', {
url: '/',
params: {
shop_id: {
value: ''
squash: true
}
},
template: '<div ui-view></div>'
})
.state('root.orders', {
url: '/{shop_id:[0-9]{0-2}}/orders',
template: 'views/order.html'
controller: 'OrdersCtrl'
})
.state('root.orders.view', {
url: '{order_id:[0-9]{1,6}}',
});
});
唯一需要注意的是我需要定义根状态。