[英]ember.js routing hierarchy
我想要一個路由層次結構。 因此,如果網址“#/ user / 123”和“#/ user / 123 /相冊”可以正常工作,那就太好了。 我想這樣做:
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');
}
})
})
});
我的第一個代碼示例模擬起來很傻,但是我想擁有路由層次結構。 有能力做到這一點嗎?
這種事情當然是可行的。 嵌套路由的例子很多。 我無法針對真正的應用檢查您的特定路由器,但是《 Ember應用程序結構指南》中有很長的示例。 請參閱“嵌套”部分。 您會發現:
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'));
}
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.