【问题标题】:BackboneJS MarionetteJS - waiting until collection has finished fetchingBackboneJS MarionetteJS - 等待收集完成获取
【发布时间】:2013-04-09 22:14:48
【问题描述】:

我有一个 BackboneJS 和 MarionetteJS 应用程序

class MyApp extends Marionette.Application

app = new MyApp
app.addRegions
  tag_container    :"#tag_container"
  item_container   :"#item_container"

app.addInitializer( =>
  app.items = new ItemCollection()
  app.item_container.show(new ItemListView({collection:app.items}))
)

在我的 ItemCollection 中,

class ItemCollection extends Backbone.Collection
  model :ItemModel
  url   :"/get_items"

  initialize: =>
    @search()

  search: =>
    @reset()
    @fetch()

上面的代码立即显示 ItemListView 并在获取项目时添加它们。

我怎样才能等到集合完成获取然后在“item_container”中显示 ItemListView?

【问题讨论】:

  • 考虑将您的 fetch 移出集合初始化程序并移入您的控制器/路由器。那么罗伯特提出的解决方案将更容易实现。

标签: backbone.js coffeescript marionette


【解决方案1】:

fetch 返回一个 jquery 承诺。所以你可以这样做

collection.fetch().done(function() { 
 // create & show the view
});

【讨论】:

    【解决方案2】:

    要么使用侦听器来了解集合何时完成他的工作。如果您正在重置它(不是 Backbone 0.9.10 的默认行为)或 sync(始终完成),您可以收听 reset
    或者您可以使用success 回调。
    Source

    第三种解决方案是进行同步获取:

    @fetch async: false
    

    【讨论】:

    • +1 用于绑定同步,即 collection.on("sync",this.myfunction.this)
    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 2023-04-07
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多