2015-10-16 126 views
1

我掙扎着爬與UI路由器工作嵌套狀態嵌套狀態UI路由器

我想一個頁面來查看的設備是有像/device/SERIAL_NUMBER/info一個網址,

  • /device是固定
  • /SERIAL_NUMBER是可變又名:id
  • /info指嵌套狀態

我有一些我想要的嵌套狀態,但爲了簡單起見,我只顯示一個狀態。請注意,對於info,它與父視圖共享相同的控制器,其他嵌套視圖不會。

國家建立

.state('device', { 
    url: '/device/:id', 
    templateUrl: '/views/devices/device.html', 
    controller: 'viewDeviceController' 
}) 
.state('device.info', { 
    url: 'info', 
    templateUrl: '/views/devices/device_info.html' 
}) 

我主要的HTML看起來像這樣

<body> 
    <header><h1>Title</h1></header> 
    <div ui-view> 
     <!-- This is where /views/devices/device.html goes --> 
    </div> 

/views/devices/device.html看起來像這樣:

<div>General text about a device</div> 
<div ui-view> 
    <!-- This is where /views/devices/device_info.html should go --> 
</div> 

如果我瀏覽到/#/device/L340009我看到的主網頁和device.html,我沒有看到device_info.html - 這是預期,但最好我想默認爲加載第一路線(信息)

如果我瀏覽到/#/device/L340009/info它將我重定向回家(這是我的otherwise),所以路由有些問題

我在哪裏出錯了?

回答

3

這裏的網址應該以 '/'

.state('device.info', { 
    // instead of this 
    // url: 'info', 
    // we need this 
    url: '/info', 
    templateUrl: '/views/devices/device_info.html' 
}) 

,將支持網址串連

'/#/device/L340009' + '/info' 
is '/#/device/L340009/info' 
+0

我覺得自己很蠢開始 - 那工作!如果沒有指定'info'作爲默認路由,我該如何獲取? – Chris

+0

對不起,對此不完全確定「如果沒有指定信息,我如何獲取信息作爲默認路由?」我不完全明白。如果提供了錯誤的狀態,你是否在問如何進行默認重定向?如果是的話,我們可以使用'$ urlRouterProvider.otherwise('/ home');' - 檢查這個plunker http://plnkr.co/edit/4pjoofCXq444kjXLqGx8?p=info –

+0

我已經有了一個其他的頂級路線,我的意思是,如果有人去'/設備/ XXXXX'我怎麼讓他們自動去'/設備/ XXXXX /信息' – Chris