通过rest从backbone.js中的集合中获取子集

时间:2013-12-30 11:20:34

标签: rest backbone.js collections

目前我正在使用backbone.js进行单页面应用程序。

我的服务器正在提供REST API。

http://server.com/article正在返回所有类别的最新文章。

http://server.com/article/categoryname仅返回指定类别的最新文章。

我目前的收藏品如下:

define(['backbone', 'models/article'], function(Backbone, Article) {
    return Backbone.Collection.extend({
        model: Article,
        url: "http://server.com/article", 
    });
});

因此,fetch我可以收到所有类别的所有最新文章。我应该在哪里实现我的特定类别请求,因此我不必为自己创建每个类别的集合,并且可能的缓存根本不会那么困难。

更改我的休息api并接收所有文章并在骨干应用程序中过滤它们会更好吗?或者我应该在我的集合中实现fetchFromCategory方法并自己构建缓存吗?

我感谢每一个提示或想法!

1 个答案:

答案 0 :(得分:1)

如果在单个请求中提取所有Articles不是问题,那么您可以这样做。要按articles获取categoryName,您可以在集合中添加方法,如下所示:

define(['backbone', 'models/article'], function(Backbone, Article) {
    return Backbone.Collection.extend({
        model: Article,
        url: "http://server.com/article",
        getArticlesByCategory : function(category) {
            return this.filter(function(article){
                    //Assuming 'Article' has a property named 'categoryName'
                    return article.get('categoryName') == category;
            });
        }
    });
});

现在,如果您articlescollection,则可以执行以下操作:

var categoryXYZArticles = articles.getArticlesByCategory('XYZ');