Ember数据从存储首先获取记录而不是API与param

时间:2015-06-23 22:01:49

标签: javascript ember.js ember-data ember-cli

我试图在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。

1 个答案:

答案 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;
        });
    }
});

顺便说一下,这将使模型更新为与过滤器匹配的新记录,但它们可能会被添加到商店中。