Backbone.js js如何用整个数据库表填充集合

Backbone.js js如何用整个数据库表填充集合,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,我已经定义了一个模型和一个集合,由于我的数据库中已经有记录,我希望在页面加载时显示应用程序中的所有记录 我尝试使用Backbone.sync,但在Chrome调试模式下仍然看到一个空集合 My Backbone.js代码: (由于模板依赖性,我不得不删除一些代码) 以下是我在Backbone.sync之后的集合中看到的内容: d _byCid: Object _byId: Object length: 0 models: Array[0] __proto__: x 您可能不应该直接调用sync

我已经定义了一个
模型
和一个
集合
,由于我的数据库中已经有记录,我希望在页面加载时显示应用程序中的所有记录

我尝试使用
Backbone.sync
,但在Chrome调试模式下仍然看到一个空集合

My Backbone.js代码:

(由于模板依赖性,我不得不删除一些代码)

以下是我在Backbone.sync之后的集合中看到的内容:

d
_byCid: Object
_byId: Object
length: 0
models: Array[0]
__proto__: x
  • 您可能不应该直接调用sync,因为该方法可能会被其他一些sync方法覆盖(用于支持localStorage、IndexedDB、couchdb或其他任何东西)。同步更像是一个“存储驱动程序”

  • 您应该调用fetch来填充集合。因此,在您的代码中,应该是这样的:

    itemlist.fetch({success: function (models) {
       console.log("got", models);
    });
    var myitemListView = new ItemListView1({collection: itemList});
    
  • 在页面加载之后立即使用异步获取填充集合被认为是“糟糕的风格”。通常,您应该使用与页面一起发送的代码来填充它,并且只在后续更新集合时使用fetch


  • 在上面的代码示例中,如果坚持执行异步获取,则可能需要延迟创建视图,直到实际填充了集合,以避免列表从空变为满时出现不必要的闪烁(视图绑定到集合,并在获取完成时重置).

    请尝试删除尽可能多的代码,直到找到重现问题的代码的最小部分。这应该是提问所必需的步骤。为集合指定的
    url
    必须指向一个以JSON形式返回集合内容的地址。剩下的就交给骨干了。而且,您不必每次都要调用
    Bacbone.sync
    来与服务器同步
    collection.fetch()是正确的方法。
    
    itemlist.fetch({success: function (models) {
       console.log("got", models);
    });
    var myitemListView = new ItemListView1({collection: itemList});