在某些情况下,我遇到了路由 url 的问题。这是我的路由器:
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 内部时,如果我指定'联系人ID'作为上下文和'/:联系人ID'作为“show”内的路线,我会得到例如'/联系人/3'在浏览器网址中,一切正常。
但是在 doShowContact 中,如果我指定'联系人 ID'而不是'联系人ID'作为上下文和'/:contact_id'而不是'/:联系人ID'作为路线。我去拿'/联系人/未定义'在浏览器网址中。
有办法解释吗?谢谢!
您应该简单地传递联系人实例,而不是伪造对象contactid
财产:
doShowContact: function(router, event) {
var contact = event.context;
router.transitionTo('show', contact);
}
您还应该指定modelClass
您的路线中的财产:
show: Em.Route.extend({
route: '/:contact_id',
modelClass: App.Contact,
// ...
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)