在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()
,但我不确定在这种情况下如何在参数中传递模型。
答案 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) =>