0

私のbackbone.jsアプリでは、モデルが変更されたときに特定のビューフィールドを更新する必要があります。例えば:

this.model.bind("change:name", function() {
    $("#name", this.el).text(this.model.get("name"))
})

このコードはどこに置くべきですか?私がそれを入れると、initialize()多分イベントは前に呼び出されrender()ます。これは少し汚れているようです。特に、レンダリングでのみ作成されるUI要素を更新するためのイベントが必要になる場合があります。

私がこのコードを入れた場合render()、これもまた適切ではないようです。たとえばrender()、何度か呼び出す場合がありますが、このロジックは1回だけ登録する必要があります。

4

1 に答える 1

2

初期化でイベントをバインドするのが最も簡単な方法なので、レンダリングがまだ行われていない場合にエラーが発生しないように、関数を十分にスマートにします。

他のいくつかの推奨事項:

  • 関数をビュープロトタイプの一部にします。
  • コールバック内で間違っているため、指定されたコードは機能しませんthis。そのため、3番目のパラメーターを渡す必要があります。
  • bind非推奨です。on代わりに使用してください。
  • $(..., this.el)と同等ですthis.$(...)
  • コールバックには新しい値が自動的に渡されるため、get再度呼び出すのは余分な作業です。

initialize: function(options){
  this.model.on('change:name', this.changeName, this);
},

changeName: function(model, name){
  this.$('#name').text(name);
}
于 2012-12-30T15:39:34.187 に答える