0

在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),但这会重新绘制整个系列。我只想 fire appendModel(),但我不确定在这种情况下如何在参数中传递模型。

4

1 回答 1

0

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

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

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

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

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

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

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

或者因为您使用的是咖啡脚本,您可以跳过该位并使用粗@appendModel箭头符号定义方法,这将确保this上下文绑定到您的视图:

appendModel: (model) =>
于 2013-01-12T23:26:06.237 回答