在集合“添加”事件期间模型是如何传递的?

时间:2013-01-12 23:20:43

标签: backbone.js coffeescript

在backbone.js中,我想做:

initialize: =>
  @collection.on("add", @appendModel(model)) # <- how to correctly write it?

render: =>
  # do some render
  @collection.each(@appendModel())

appendModel: (model) ->
  # append model to $el

目前,我有@collection.on("add", @render),但重绘整个集合。我想解雇appendModel(),但我不确定在这种情况下如何在参数中传递模型。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您首先使用参数@appendModel调用model方法,然后将返回值传递给collection.on

@collection.on("add", @appendModel(model))

您需要传递对该方法的引用:

@collection.on("add", @appendModel)

调用者(在本例中为Backbone)会将参数传递给该方法。

您可能还需要将this(或@)作为第三个参数传递给collection.on方法。这是 context 参数,它告诉Backbone在执行回调时,应将this上下文设置为该值:

@collection.on("add", @appendModel, @)

或者因为您正在使用coffeescript,您可以跳过该位并使用胖箭头表示法定义@appendModel方法,这将确保this上下文绑定到您的视图:< / p>

appendModel: (model) =>