我对Backbone很新,只是遇到了这个令人困惑的问题。我正在尝试使用以下代码在Express node.js服务器中将模型提取到我的集合中:
app.get('/tweet', function(req,res){
res.send([{ name: 'random_name' }, {name: 'diren_gezi'}] );
});
我的骨干代码如下:
var PostsApp = new (Backbone.View.extend({
Collections: {},
Models: {},
Views: {},
}
start: function(){
var data = {
posts: [
{name:"gorkem"},
{name: "janish"},
{name: "akash"}
]
};
var posts = new PostsApp.Collections.Posts(data.posts);
var postsView = new PostsApp.Views.Posts({collection: posts});
posts.url = "/tweet";
posts.fetch();
console.log(posts.length);
console.log(posts);
}
}))({el : document.body});
我希望console.log(posts.length)返回5,因为我在初始化时添加3,在获取时添加2个。或者即使fetch方法擦除了集合并重新填充,我希望posts.length返回2.然而它返回3,但是当我从控制台查看post对象时我只看到两个模型,来自fetch()方法。这是什么原因?
答案 0 :(得分:1)
这是因为,当您进行提取时,重置集合
因此先前的内容将被删除并刷新2个新内容。这就是你看到长度为2的原因。
传递合并:true,查看长度为5,其中有效合并集合
posts.fetch({merge: false});
答案 1 :(得分:-1)
因为您已经声明了数据,所以当您进行提取时,还会再返回2个。
var data = {
posts: [
{name:"gorkem"},
{name: "janish"},
{name: "akash"}