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)、それはコレクション全体を再描画します。だけ発火したいのですappendModel()が、この場合、引数でモデルを渡す方法がわかりません。

4

1 に答える 1

0

あなたの例では、最初に@appendModel引数を指定してメソッドを呼び出し、次に戻り値をにmodel渡しています。collection.on

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

代わりに、メソッドへの参照を渡す必要があります。

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

呼び出し元 (この場合はバックボーン) が引数をメソッドに渡します。

メソッドへの 3 番目の引数としてthis(または)を渡す必要がある場合もあります。これは、コールバックが実行されたときにコンテキストをその値に設定する必要があることをバックボーンに伝えるコンテキスト引数です。@collection.onthis

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

または、coffeescript を使用しているため、そのビットをスキップし@appendModelて太い矢印表記を使用してメソッドを定義できます。これにより、コンテキストが確実にthisビューにバインドされます。

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