目前我正在使用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方法并自己构建缓存吗?
我感谢每一个提示或想法!
答案 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;
});
}
});
});
现在,如果您articles
是collection
,则可以执行以下操作:
var categoryXYZArticles = articles.getArticlesByCategory('XYZ');