5

私は backbone.js を使用しており、コレクションのないモデルを持っています。ビューでは、コールバックを使用してモデルの fetch を呼び出し、ビューをレンダリングします。

this.user.fetch({success: function(d) { self.randomUserView.render() }})

モデルが変更されたときにビューを自動的に更新するにはどうすればよいですか? たとえば、fetch を呼び出すたびに上記のコールバックを指定したくありません。初期化時にビューを多くのモデル イベントにバインドしようとしましたが、うまくいきませんでした。

4

3 に答える 3

12

ビューで、ビューのモデルにイベント ハンドラーを追加します。

initialize: function() {
  this.model.on('change',this.render,this);
}
于 2012-06-25T16:32:14.267 に答える
1

バックボーンはイベント駆動型であり、コールバック駆動型のフレームワークではありません (技術的にはコールバックですが)。そして、あなたのアプローチはバックボーンにネイティブではないようです。fetch() を実行すると、ユーザー モデルは自動的に「追加」イベントをトリガーします。あなたがする必要があるのは、対応するビューでこれを初期化に追加することだけです:

initialize: function() {
  ... your code...
  this.model.bind('add', this.render);
}

このようにして、ビューの初期化で一度だけでもこれをサブスクライブし、明示的なコールバックを渡す必要はありません。

于 2012-06-25T16:35:44.843 に答える
0

実際、コレクションのフェッチ時にビューを更新したい場合は、RESET をバインドする必要があります!

this.model.bind('reset', this.render, this);

更新は、現在のコレクションが編集された場合にのみ発生します。

ps bindAll は危険で怠け者です。(そして、おそらく後で問題が発生する可能性があります)

于 2013-03-25T15:06:28.917 に答える