私が通常設定する方法は、Backbone.Eventsを多用することです。ビュー内のメソッドにこれらのイベントをバインドすることで、ビュー内のクリック イベントを傍受する傾向があります。次に、そのバインドされたイベントはビュー固有の作業を行い、次に次のようなことを行いthis.trigger("Router_SomeEvent")
ます。通常、そのイベントのバインディングは、ルーターでビューが作成される場所で指定されます。
// Begin router snippet...
someRouteMethod: function() {
this.views.SomeViewInstance = new MyViews.SomeViewClass();
this.views.SomeViewInstance.bind("Router_SomeEvent", this.onSomeEvent);
},
onSomeEvent: function() {
this.navigate("NewLocation", { trigger: true });
}
// End router snippet
この種のパブリッシュ/サブスクライブ (pub/sub)パターンを使用すると、コードがより分離され、処理と拡張が容易になります。最初は少し混乱しますが、コツをつかむと、なぜ便利なのかがますます明確になります。私のビューには、レンダリング、UI へのイベント バインディング、および必要に応じてルーターへのイベントのバブリングのためのロジックが含まれているだけですが、ルーターにすべての... まあ... ルーティングを処理させる傾向があります。イベントをモデルにバインドすることもできます。私はモデルをビューと同様に使用する傾向があり、モデルはルーターに何らかの変更を通知し、ルーターは先に進み、ビューの状態を変更したり、他のモデルやコレクションを変更したりしてそのイベントを処理します。
Backbone は非常に強力ですが、習得にはかなりの時間がかかります。Addy Osmani のBackbone Fundamentalsをお勧めします。彼はまた、O'Reilly に関する本を持っています。