0

我的 BackboneJS “列表项视图”定义如下:

  class TagListView extends Backbone.View
    el:"#tags"

    render: =>
      @collection = new TagCollection
      @collection.fetch_data
        order_by : "name"
      , =>
        @on_success()

    on_success: =>
      view_arr  = []      
      @collection.each (tag_model) =>
        tag = new TagView {model: tag_model}
        view_arr.push tag.render().el
      @$el.empty().append view_arr

我如何将其更改为 MarionetteJS 集合视图?我尝试了以下方法,它似乎不起作用?

  class TagListView extends Marionette.CollectionView
    el:"#tags"
    itemView:TagView

    onBeforeRender: =>
      @collection = new TagCollection
      @collection.fetch_data
        order_by : "name"
      , =>
        @render()

我只是删除了 on_sccess() 方法,因为我的理解是 CollectionView 将通过它的渲染方法来渲染它的项目?

4

1 回答 1

1

你是对的。

The collection view binds to the "add", "remove" and "reset" events of the collection that is specified.一旦发生这些事件中的任何一个,集合视图将自动更新视图,无论是部分还是整体。

您可能想知道的另一件事是在 1.0.0 版本中,当一个集合进行提取时,默认情况下它不会再触发该reset事件。要获得旧行为,请通过{reset: true}.

于 2013-04-13T15:37:47.450 回答