我正在尝试根据弹头而不是ember cli应用程序中的路由的id加载一些数据。我已经创建了一条路由,该子参数已正确传递到模型挂钩,并且由于某些数据在初始化时会引导到应用程序中,因此我已经在存储中存储了记录数据。但是,商店始终在寻找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。

最佳答案

您正在寻找store.filter,而没有query参数会触发网络呼叫。

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


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

关于javascript - Ember数据从Store First而不是带有参数的API获取记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31014301/

10-13 03:56
查看更多