2014-01-24 44 views
3

我有许多页/网址,所有使用相同的父状态/模板:模拟别名状态UI路由器

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

现在我有2个假人的状态/路由(/产品/订单)仅仅为了创建其他子状态的父状态 - a)我不这样做,b)我复制它们以实现所需的URL。

.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" 
}) 

注意/谐音/普通/主要包含所使用的所有订单的内部UI画面/ ......和产品/ ...这种观点是在上面的两个主要途径相同(在现实中我有〜10相同的“占位”的路线)

回答

0

您可以设置无用状态abstract: true,这意味着他们只是充当假人。但是,虚拟路由需要一个模板,如<div ui-view=""></div>或沿着这些线路的某个模板,以便子模板知道在哪里加载。

如果你做了这些抽象的路线没有控制器的逻辑,那么你可以随时离开他们,并简单地创建您的孩子的路线orders.listorders.create而不真正创建一个orders状态。取决于你的要求。

+0

Well orders.list等需要加载在'/ partials/common/main'中的内部ui-view中,所以有没有办法可以省略父路由并以某种方式指定它?或者是运行多个抽象父状态的唯一方式? – cyberwombat

+0

是的,我倾向于每个普通的可重用父视图都有一个抽象的状态。它通常很有意义,因为那时你对每个孩子都有共同的控制器,所以你可以在那里放置很多共同的逻辑。 –