2015-10-06 134 views
-1

我有一個問題加載控制器/模板爲每個子狀態。我在每個狀態控制器中都有一個console.log,但它們不會觸發。任何想法將不勝感激!UI路由器兒童狀態角加載控制器

意圖是隨時爲每個孩子狀態加載藝術家。

var stateConfig = ['$stateProvider', function($stateProvider) { 
// State Configurations 
$stateProvider 
.state('artist', { 
    abstract: true, 
    url: '/' + artistSlug, 
    controller: "artistCtrl", 
    resolve: { 
    artist: function(artist){ 
     return artist.getArtist(); 
    } 
    } 
}) 
.state('events', { 
    parent: 'artist', 
    url: '', 
    controller: 'eventsCtrl', 
    templateUrl: "/templates/artist/events.html" 
}) 
+0

什麼是'artistSlug'?爲什麼'events'有空的url? – charlietfl

+0

希望將事件解析爲默認網址,而其他狀態也需要藝術家。 artistSlug是一個帶連字符的url字符串 – Yasir

回答

1

我想你需要修改你的國家/ PARAMS

它應該去的藝術家 - > artists.artist - > artists.artist.events。然後,如果你去//site.com/artists/justintimberlake/events它會解決藝術家,然後事件

var stateConfig = ['$stateProvider', function($stateProvider) { 
    // State Configurations 
    $stateProvider 
    .state('artists', { 
     abstract: true, 
     url: '/artists' 
    }) 
    .state('artists.artist', { 
     url: '/:artistId', 
     controller: 'artistCtrl', 
     template: '<div ui-view>Artist Template Wrapper for Artist and Events</div>', 
     resolve: { 
     artist: function (artist, $stateParams) { 
      return artist.getArtist($stateParams.artistId); 
     } 
     } 
    }) 
    .state('artists.artist.events', { 
     url: '/events', 
     controller: 'eventsCtrl', 
     templateUrl: '/templates/artist/events.html', 
     resolve: { 
     events: function (artist, $stateParams) { 
      return artist.getArtistEvents($stateParams.artistId); 
     } 
     } 
    }) 
}]; 
+0

感謝您的提示,在這種情況下,artistId將是根。爲前。 //site.com/justin-timberlake/events – Yasir

+0

我認爲你還有一個路徑可以顯示標準CRUD模型中的所有藝術家{創建,讀取/列表,更新,刪除} – Enkode

+0

是的,這裏也有一個狀態視圖,儘管抓住所有的藝術家目前已被最低限度地使用 – Yasir