2014-01-24 219 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

是的,我傾向於每個普通的可重用父視圖都有一個抽象的狀態。它通常很有意義,因爲那時你對每個孩子都有共同的控制器,所以你可以在那裏放置很多共同的邏輯。 –