2015-10-06 133 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