我对Ember很新。
我在嵌套路由中遇到此动态网址功能时遇到问题。
我一般都了解嵌套路线,如:
App.Router.map(function(), {
this.resource('orders', function(){
this.route('order', { path: "/orders/:order_id" })
})
})
我知道将{{ outlet }}
置于orders
模板中以显示嵌套的order
对象。
但我的问题是,order_id的命名约定如何与我的模型数据相关?
如果我的订单数据是:
{
id: 1,
name: "John Doe",
address: "123 example rd",
telephone: "5145555555"
}
这是:order_id与rails类似,因为它将对象名称“:order_”添加到“id”的JSON属性中吗?
我很确定是这种情况,但我不确定在访问路径时我还缺少什么来显示特定对象:"/orders/1"
某处可能是Ember.ObjectController
,但我无法弄明白。
答案 0 :(得分:0)
order_id必须是将在过渡和linkTo中使用的对象的属性。
{{linkTo 'orders.order' obj}}
在上述情况下,您的路线obj.object_id
应该解决。所以你有两个选择:
(1)将动态细分设置为:id
path: "/orders/:id"
或(2)向您的模型添加order_id。如果您使用的是ember-data,则可以轻松创建别名属性:
order_id: Ember.computed.alias('id'),
答案 1 :(得分:0)
您的动态slug应该与记录上的标识符匹配,或者您应该覆盖路由上的序列化程序,以便在尝试生成URL时为ember提供必要的信息。
http://emberjs.jsbin.com/AvOYIwE/2/edit
App.OrderRoute = Ember.Route.extend({
model: function(params) {
this.get('store').find('order', params.order_id);
},
serialize: function(model){
//if your model doesn't have a property that matches the slug you must override the serialize method
return {order_id: model.get('id')};
}
});