UI路由器的模拟别名状态

时间:2014-01-24 03:38:31

标签: javascript angularjs angular-ui-router

我有许多页面/网址都使用相同的父状态/模板:

/orders/list
/orders/create
/products/list
/products/create

现在我有2个虚拟状态/路由(/ products和/ orders),它们只是为其他子状态创建父状态 - a)我没有它们和b)我复制它们以实现所需的网址。

.state('orders', {
      url: "/orders",
      templateUrl: "/partials/common/main"
    })
    .state('products', {
      url: "/products",
      templateUrl: "/partials/common/main"
    })
    .state('orders.list', {
      url: "/view",
      templateUrl: "/partials/orders/view"
    })
    .state('orders.create', {
      url: "/create",
      templateUrl: "/partials/orders/edit"
    })
    .state('products.list', {
      url: "/view",
      templateUrl: "/partials/products/view"
    })
    .state('products.create', {
      url: "/create",
      templateUrl: "/partials/products/edit"
    })

我可以用一些功能来清理它吗?至少只有一个主要状态 - 我四处寻找别名但找不到任何东西。

如:

.state('main', {
  url: "/[orders|products]",  // some kind of url match
  templateUrl: "/partials/common/main"
})

请注意/ partials / common / main包含所有订单/ ...和products / ...使用的内部ui视图,并且此视图在上述两条主要路径中是相同的(实际上我有〜10个相同的“占位符”路线)

1 个答案:

答案 0 :(得分:0)

您可以设置未使用的状态abstract: true,这意味着它们只是充当假人。但是,虚拟路径需要<div ui-view=""></div>之类的模板或沿着这些行的某些东西,以便子模板知道要加载的位置。

如果您没有使用这些抽象路线的控制器逻辑,那么您可以随时将它们排除在外,只需创建子路线orders.listorders.create,而无需实际创建orders状态。取决于您的要求。