2013-11-08 3 views
0

Я очень новичок в Ember.Соглашение об именовании EmberJS Для: {path: "/: object_id"}

У меня возникли проблемы с этой функцией динамического URL-адреса в вложенных маршрутах.

Я понимаю гнездование маршрутов в целом, как:

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 работа похожа на рельсы в том, что он присоединяет имя объекта «: order_» для атрибута JSON из «ид»?

Im уверен, что это так, но я не уверен, что я еще не хватает, чтобы отобразить конкретный объект, когда я посещаю путь: "/orders/1"

вероятно Ember.ObjectController где-то, но я не могу вполне понять это.

+0

сделал любой из этих ответов работать для вас? –

ответ

0

Признак order_id должен быть свойством объекта, который будет использоваться в переходах и linkTo.

{{linkTo 'orders.order' obj}} 

В случае выше для маршрута obj.object_id должен решить. Так у вас есть два варианта:

(1) Установите динамический сегмент: идентификатор

path: "/orders/:id" 

Or (2) добавить в ORDER_ID к вашей модели. Если вы используете Ember-данные, вы можете легко создать не сглаженный свойство:

order_id: Ember.computed.alias('id'), 
0

Ваш динамический пробкового должен либо совпадать с идентификатором на запись, или вы должны переопределить сериалайзер на маршрут таким образом, чтобы обеспечить необходимое информация для ember, когда он пытается сгенерировать ваш url.

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')}; 
    } 
});