【问题标题】:Fetching Models to a Collection将模型提取到集合
【发布时间】:2013-06-06 18:19:23
【问题描述】:

我对 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() 方法。这是什么原因?

【问题讨论】:

    标签: javascript node.js backbone.js express


    【解决方案1】:

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

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

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

    posts.fetch({merge: false});
    

    【讨论】:

    • 但我看不到长度为 2,我看到长度为 3.. 正如我在问题 2 中所说的那样
    • 是的,这是我的困惑之一,posts.length 应该告诉我集合中的模型数量对吗?
    • 对.. 但是您的收藏已被 fetch requests 刷新,其中填充了模型,因此您会看到 2 的长度
    【解决方案2】:

    因为你已经声明了数据,当你提取数据时,你又返回了 2 个。

    var data = {
            posts: [
            {name:"gorkem"},
            {name: "janish"},
            {name: "akash"}
    

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 2021-08-25
      • 1970-01-01
      • 2014-12-02
      • 2011-11-28
      • 2015-09-05
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多