2012-10-17 5 views
0

계층 구조를 라우팅하고 싶습니다. URL "#/user/123"및 "#/user/123/albums"이 작동하면 좋을 것입니다.ember.js 라우팅 계층

App.Router = Em.Router.extend({ 
    root: Em.Route.extend({ 
    index: Em.Route.extend({ 
     route: '/' 
    }), 
    user: Em.Route.extend({ 
     route: '/user/:login', 
     connectOutlets: function(router, context){ 
     router.get('applicationController').connectOutlet('user', context); 
     }, 
     albums: Em.Route.extend({ 
     route: '/albums', 
     connectOutlets: function(router){ 
      router.get('applicationController').connectOutlet('albums'); 
     } 
     }) 
    }) 
    }) 
}); 

하지 이러한 방법 : 와 나는 이런 식으로 그렇게 할

App.Router = Em.Router.extend({ 
    root: Em.Route.extend({ 
    index: Em.Route.extend({ 
     route: '/' 
    }), 
    user: Em.Route.extend({ 
     route: '/user/:login', 
     connectOutlets: function(router, context){ 
     router.get('applicationController').connectOutlet('user', context); 
     } 
    }), 
    albums: Em.Route.extend({ 
     route: '/user/:login/albums', 
     connectOutlets: function(router){ 
     router.get('applicationController').connectOutlet('albums'); 
     } 
    }) 
    }) 
}); 

내 첫 번째 코드 examle 바보로 심,하지만 난 계층 라우팅 갖고 싶어. 거기에 할 수있는 능력이 있습니까?!

답변

1

이런 종류의 것은 확실히 가능합니다. 거기에 중첩 된 경로의 많은 예제가 있습니다. 특정 라우터를 실제 응용 프로그램과 비교할 수는 없지만 Ember Application Structure guide에 예제가 많이 있습니다. 중첩에 대한 섹션을 참조하십시오. 당신은 이것을 찾을 수 있습니다 :

post: Ember.Route.extend({ 
    route: '/posts/:post_id', 
    connectOutlets: function(router, post) { 
    router.get('applicationController').connectOutlet('post', post); 
    }, 
    index: Ember.Route.extend({ 
    route: '/', 
    redirectsTo: 'comments' 
    }), 
    comments: Ember.Route.extend({ 
    route: '/comments', 
    showTrackbacks: Ember.Route.transitionTo('trackbacks'), 
    connectOutlets: function(router) { 
     var postController = router.get('postController'); 
     postController.connectOutlet('comments', postController.get('comments')); 
    } 
    }), 
    trackbacks: Ember.Route.extend({ 
    route: '/trackbacks', 
    showComments: Ember.Route.transitionTo('comments'), 
    connectOutlets: function(router) { 
     var postController = router.get('postController'); 
     postController.connectOutlet('trackbacks', postController.get('trackbacks')); 
    } 
    }) 
}) 
+0

+1, 나는 @ user1753867의 첫 번째 구현이 작동하는지 확인합니다. –