动态URL前缀UI路由器AngularJS

时间:2015-01-12 08:16:26

标签: angularjs angular-ui-router

我们有一个拥有多主机设置的电子商务网站。此外,还添加了一个额外的层次结构,其中商店属于一个帐户。

我们使用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}}'
       });
});

1 个答案:

答案 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}}',
       });
});

唯一需要注意的是我需要定义根状态。