2013-05-29 59 views
1

我的路由定义:灰烬.transitionToRoute和currentModel问题

this.resource("visitor", {path: ":id"}); 

当我通过URL /12345访问页,this.currentModel

{id: "12345"} 

但是当我this.transitionToRoute("visitor", "12345")从另一个(父母)控制器,其值为this.currentModel

"12345" 

我也得到此异常:

Uncaught Error: assertion failed: Path '12345' must be global if no obj is given. 

任何想法是怎么回事?

更多代码:

App.VisitorRoute = Ember.Route.extend({ 
    model: function (params) { 
    return {id: params.id}; 
    }, 
    setupController: function() { ... } 
} 

回答

3

您需要向路由器说明如何将模型转换为URL,因此您需要覆盖serialize

App.VisitorRoute = Ember.Route.extend({ 
    model: function (params) { 
    return {id: params.id}; 
    }, 
    serialize: function(model) { 
    return model; 
    } 
}); 

之后通过模型与过渡:

this.transitionToRoute('visitor' , { id: 12345 }); 
2

当你调用this.transitionToRoute(),你需要在路径和模式作为参数传递,所以不是this.transitionToRoute(“访客”,“12345”) ,而是使用this.transitionToRoute(“visitor”,vistorModel)