2015-10-01 3 views
0

Это мой маршрутизатор:Emberdata Как сделать запрос на динамическом сегменте

Router.map(function() { 
    this.route('merchant', { path:'/merchant/:id' }, function() { 
    this.route('product-tag'); 

В настоящее время мой апи как это работает. Так что я пытаюсь получить все тег продуктов, которые принадлежат к торговцу с идентификатором: 1781.

http://localhost:3001/merchant/1781/product_tags

Ближайшим я получил использую продукт-теги маршрут делает что-то вроде этого:

model: function() { 
    debugger; 
    var parentModel = this.modelFor('merchant').merchant; 
    return this.store.find('product-tag', { merchant_id: parentModel.id}); 
} 

Это сгенерирует запрос:

http://localhost:3000/product_tags?merchant_id=1781

я предполагаю, что из-product_tag является в подпрограмме торговца он будет учитывать динамический сегмент торговца, но это, похоже, не так.

Спасибо за помощь.

Мои модели заключаются в следующем:

Торговец:

export default DS.Model.extend({ 
    user_id: DS.attr('number'), 
    tags: DS.hasMany('product-tag', {async: true}) 
}); 

продукт-тег:

export default DS.Model.extend({ 
    merchant: DS.belongsTo('merchant', {async: true}), 
    name: DS.attr('string'), 
    active: DS.attr('boolean'), 
    taggings_count: DS.attr('number') 
}); 
+0

Как выглядят модели торговых и товарных тегов? –

+0

Я только что обновил свой пост. спасибо – imahungry

ответ

0

Ваши маршруты приложения не связаны с конечными точками API, на которые будут поступать данные Ember Data. Адаптеры будут создавать запрос API для каждой модели.

Если у вас есть контроль над сервером API, самый простой способ получить merchantproduct tags - это отправить ссылку на вашу полезную нагрузку merchant. Я не знаю, какой формат использует ваш API, но должен выглядеть примерно так:

"merchant": { 
    "id": "1", 
    "user_id": "10" 
    "links": { 
    "product-tags": "http://localhost:3001/merchant/1781/product_tags" 
    } 
} 
+0

Спасибо. это сработало отлично! Это была хорошая статья о том, чтобы отношения были асинхронными: http://stackoverflow.com/questions/18812730/ember-data-lazy-load-association-with-links-attribute – imahungry

1

model крючок имеет два аргумента. Первый должен содержать динамические сегменты. Так, что-то, как это должно работать:

//Router 
Router.map(function() { 
    this.route('merchant', { path:'/merchant/:merchant_id' }, function() { 
    this.route('product-tag'); 

//Route 
model: function(params) { 
    return this.store.find('product-tag', { merchant_id: params.merchant_id}); 
} 

Что касается второй части вашего вопроса, данные Эмбер не поддерживает вложенные URL. Discussion on this subject

Смежные вопросы