0

我想在我的項目中實現嵌套狀態,但它們不按預期方式工作。AngularJs:嵌套狀態不顯示

儘管視圖模板和js調用是在後臺加載的,但屏幕不會改變換句話說嵌套屏幕不顯示。

的http:// {域} /#/應用/存儲/用戶/ 1 /新

下面是我的工作

.state('app.store.users', { 
    url: '/users/:storeid', 
    params: { storeid: '1' }, 
    templateUrl: 'store/users', 
    controller: 'UsersController', 
    require: ['users', 'datatables'], 
    data: { 
    displayName: 'Store Users' 
    } 
}) 
.state('app.store.users.new', { 
    url: '/new', 
    templateUrl: 'store/newuser', 
    controller: 'NewUserController', 
    require: ['newuser'], 
    data: { 
    displayName: 'New User' 
    } 
}) 
; 

HTTP的代碼片段:// {域} /# /應用/存儲/用戶/ 1 /新

考慮到上述的URL,顯示用戶NEWUSER

在此先感謝!

+0

爲什麼你的URL是這樣/應用/存儲/用戶...?從哪裏來應用程序/商店? –

+0

控制檯中有任何錯誤嗎? –

+0

@ZeRubeus上面有兩個父狀態,'app'和'app.store'依次有url'/ app'和'app/store'。直到/用戶的事情工作正常。 – ANKIT

回答

1

您需要在父視圖中包含ui-view,以便它知道附加了子視圖。

主要包括

<div ui-view></div> 

OR

<ui-view></ui-view> 
中要加載子狀態的HTML部分的 app.store.users狀態,在地方

應用.store.users.new

這是ui路由器的工作原理。

檢查這個plunker更好地理解它: http://plnkr.co/edit/u18KQc?p=preview

編輯:

如果你希望他們作爲兩個獨立的畫面,他們不應該在父子關係。它們應該是兩個獨立的狀態,其中URL仍然可以嵌套。只需將您的州名改爲彼此獨立。

像這樣將工作:

.state('app.store.users', { 
    url: '/users/:storeid', 
    params: { storeid: '1' }, 
    templateUrl: 'store/users', 
    controller: 'UsersController', 
    require: ['users', 'datatables'], 
    data: { 
    displayName: 'Store Users' 
    } 
}) 
.state('app.store.newusers', { 
    url: '/users/:storeid/new', 
    params: { storeid: '1' }, //you still have to pass params to it 
    templateUrl: 'store/newuser', 
    controller: 'NewUserController', 
    require: ['newuser'], 
    data: { 
    displayName: 'New User' 
    } 
});