2015-06-23 1 views
1

Я пытаюсь загрузить некоторые данные на основе slug, а не id из маршрута в приложении ember cli. Я создал маршрут, параметр slug правильно передается на крючок модели, и у меня уже есть данные записи в хранилище, так как некоторые данные загружаются в приложение при его инициализации. Однако магазин всегда смотрит на маршрут api, а не только на локальную версию. Как я могу это предотвратить?Данные Ember Получить запись из магазина Сначала, а не API с параметром

router.js

this.resource('vendor', {path: '/:slug'}, function() { 
     this.resource('category', {path: '/:vendor_id/categories/:category_id'}); 
     this.resource('product', {path: '/:vendor_id/products/:product_id'}); 
    }); 

маршруты/vendor.js

export default Ember.Route.extend({ 
    model: function(params) { 
     return this.store.query('vendor', {slug: params.slug}); 
    } 
}); 

, а затем в консоли я вижу вызов апи уволят к

http://localhost:4200/api/vendors?slug={slug from params} 404 (Not Found) 

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

+0

http://stackoverflow.com/a/19657808/1401094 Немного старый, но по-прежнему применяется. –

+0

, похоже, не работает, что касается поиска по идентификатору, но в моем приложении, если я пытаюсь использовать вторичный параметр find, всегда отправляет запрос на сервер. – BillPull

ответ

1

Вы ищете store.filter, без параметра query, который вызовет сетевой вызов.

export default Ember.Route.extend({ 
    model: function(params) { 
     return this.store.filter('vendor', function(vendor) { 
      return vendor.get('slug') === params.slug; 
     }); 
    } 
}); 

Кстати, это будет держать модель обновляется новыми записи, попадающих в фильтр, однако они могут добавляться в магазин.