我试图在ember cli应用程序中加载一些基于slug而不是来自路径的id的数据。我创建了一个路由,slug param正确地传递给模型钩子,我已经在商店中有记录数据,因为一些数据在初始化时被引导到应用程序中。然而,商店总是在寻找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});
}
});
然后在控制台中我可以看到api调用被触发
http://localhost:4200/api/vendors?slug={slug from params} 404 (Not Found)
我计划构建这个端点,但我很好奇为什么当我在ember商店中看到数据时它正在查看API。
答案 0 :(得分: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;
});
}
});
顺便说一下,这将使模型更新为与过滤器匹配的新记录,但它们可能会被添加到商店中。