1

我对 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 方法删除了集合并重新填充,我希望 post.length 返回 2。但是它返回 3,但是当我从控制台查看 post 对象时,我只看到两个模型,一个来自fetch() 方法。这是什么原因?

在此处输入图像描述

4

2 回答 2

1

这是因为,当您执行 fetch 时,集合会被重置

因此,以前的内容被删除并用 2 个新内容刷新。这就是您看到长度为 2 的原因。

通过 merge: true,查看长度为 5 ,其中有效地合并了集合

posts.fetch({merge: false});
于 2013-06-06T18:26:47.260 回答
-1

因为您已经声明了数据,并且当您获取数据时,您又返回了 2 个。

var data = {
        posts: [
        {name:"gorkem"},
        {name: "janish"},
        {name: "akash"}
于 2013-10-24T04:00:55.527 回答