在某些情况下,我遇到了路由网址的问题。这是我的路由器:
contacts: Em.Route.extend({
route: '/contacts',
index: Em.Route.extend({
route: '/',
connectOutlets: function(router, context) {
App.contactsController.populate()
var appController = router.get('applicationController');
appController.connectOutlet('contactsList');
}
}),
show: Em.Route.extend({
route: '/:contactid',
connectOutlets: function(router, context) {
alert('show contact');
}
}),
doShowContact: function(router, event){
router.transitionTo('show', {contactid: event.context.id});
}
}),
当我进入doShowContact内部时,如果我指定'contactid'作为上下文而'/:contactid'作为'show'中的路线,我会得到例如浏览器网址中的'/ contacts / 3',一切正常。
但是在doShowContact中,如果我指定'contact_id'而不是'contactid'作为上下文而'/:contact_id'而不是< strong>'/:contactid'作为路线。我会在浏览器网址中获得'/ contacts / undefined'。
有没有办法解释它?谢谢!
答案 0 :(得分:4)
您应该简单地传递联系人实例,而不是伪造具有contactid
属性的对象:
doShowContact: function(router, event) {
var contact = event.context;
router.transitionTo('show', contact);
}
您还应在路线中指定modelClass
属性:
show: Em.Route.extend({
route: '/:contact_id',
modelClass: App.Contact,
// ...
})