与ARGS Emberjs航线在某些情况下会失败(Emberjs route with args f

2019-09-20 07:07发布

在某些情况下,我得到了与路由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进入,如果我指定“的ContactID”为背景和“/:使用ContactID”作为内部“秀”路线,我会在浏览器网址获得例如“/联系人/ 3”,一切正常。

然而,在doShowContact,如果我指定“CONTACT_ID”而不是“的ContactID”为背景和“/:CONTACT_ID”而不是“/:使用ContactID”的路线。 我会在浏览器URL“/联系人/未定义”。

有没有办法来解释呢? 谢谢!

Answer 1:

您应该简单地通过接触实例,而不是建立一个对象contactid属性:

doShowContact: function(router, event) {
  var contact = event.context;
  router.transitionTo('show', contact);
}

你还应该指定modelClass在您的路线属性:

show: Em.Route.extend({
  route: '/:contact_id',
  modelClass: App.Contact,

  // ...
})


文章来源: Emberjs route with args fail in some case