在前端使用Backbone的Rails应用程序。我有几篇文章保存到数据库中。每篇文章都有自己独特的ID,但它们也有一个publication_id。我想做的是抓住具有特定publication_id的每篇文章。可能有多篇文章与任何给定的publication_id相关联。我正在尝试使用Backbone附带的下划线_.where功能。
delete_publication: function(id){
var articles = new MyProject.Collections.Articles();
console.log(articles.where({publication_id: id}));
}
编辑:在这个版本中如果我只是console.log文章我得到:
child {length: 0, models: Array[0], _byId: Object, constructor: function, url: "/articles"…}
目标是最终获取模型,从数据库中删除它们然后相应地更新视图。现在我只想要打印具有该特定publication_id的文章子集。这只是将一个空数组打印到控制台。
我也试过这个:
delete_publication: function(id){
var articles = new MyProject.Collections.Articles();
articles.fetch({
success: function(data){
console.log( data.where({publication_id: id}) );
}
});
}
编辑:在这个版本中如果console.log只是我得到的文章:
child {length: 23, models: Array[23], _byId: Object, constructor: function, url: "/articles"…}
也只打印一个空数组。我知道我寻找的数据是在数据库中,所以如果我做了正确的事情,我不应该得到空数组。
如何使用_.where函数来获取集合的子集?也开放更好的方法。希望对于有经验的人来说,答案是显而易见的!
解决方案! *
delete_publication: function(id){
var articles = new SimpleGoogleReader.Collections.Articles();
articles.fetch({
success: function(data){
_.each(data.models, function(item){
if (item.toJSON().publication_id == id) {
console.log(item.toJSON());
}
// console.log(item.toJSON().publication_id);
});
}
});
}
Rida BENHAMMANE再次做到了!上面的代码只向控制台打印了我想要的文章的JSON对象。
答案 0 :(得分:0)
var filtered = _.where(data, {
publicationId: id
});
答案 1 :(得分:0)
这是使用success
回调的第二种方法,只需检查返回的模型是否设置了publication_id
:
_each(data.models, function(item) {
if (item.publication_id) {
console.log(item);
}
});
答案 2 :(得分:0)
fetch上的成功回调返回jqXHR而不是您正在操作的集合。 你可以像这样重写你的电话并使用你在文章上的闭包。
delete_publication: function(id){
var articles = new MyProject.Collections.Articles();
articles.fetch().then(function(){
console.log(articles.where({publication_id: id}));
});
}