【问题标题】:Backbone.Deferred.Collection triggers multiple 'add' event - How to handle these events in batch?Backbone.Deferred.Collection 触发多个“添加”事件 - 如何批量处理这些事件?
【发布时间】:2015-11-10 17:34:06
【问题描述】:

这是我的代码:

class ActivityView extends App

  onInitialize: ->
    @activities = new Activities
    @activities.on 'add remove', @_renderActivityItems, @

当我从服务器端点检索数据时,响应可能包含十几个数据点。但是,每当将每条数据添加到集合中时,都会触发“添加”事件,并且会多次调用函数_renderActivityItems

这似乎非常昂贵,因为该函数实际上会渲染集合内的所有元素。

最好在将所有元素添加到集合后调用一次_renderActivityItems 函数。

如何通过主干事件实现它?

【问题讨论】:

  • 您是否使用 Collection.fetch() 方法来初始化集合?如果是这样,添加一个选项 {silent: true} 以防止监听器触发获取。
  • 好建议!你是怎么找到这个选项的。我看了一下文档backbonejs.org/#Collection-fetch,它没有提到silent。顺便说一句,请将您的评论转换为答案,以便我投票。
  • 它在文档中,但隐藏在事件部分的底部。几个月前我在同一个问题上苦苦挣扎后发现了这一点:)
  • @AnthonyKong 如果回答解决了您的问题,请采纳表示问题已解决。
  • 还没有。还需要测试一下

标签: backbone.js coffeescript


【解决方案1】:

在 Backbone 1.2.0 中添加了更新事件

添加了一个“更新”事件,在任意数量的模型被触发后触发 从集合中添加或删除。方便重新渲染事物列表 不反弹。

"update" (collection, options) — 在任何事件之后触发的单个事件 已从集合中添加或删除模型的数量。

【讨论】:

    【解决方案2】:

    如果您使用Collection.fetch() 方法来初始化集合,请添加选项{silent: true} 以防止侦听器触发获取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多