私の理解では、違いは、上のイベントへのコールバック関数が、同じ Router オブジェクトではなく、 にAppRouter
存在する必要があることです。Controller
また、このような AppRouter と Controller の間には 1 対 1 の関係があり、Router からのすべてのコードが Controller に移動するようになりました。では、なぜそれらを使用するのでしょうか。私は何かが欠けている必要がありますか?
2 に答える
私がそれを見る方法は、懸念を分離することです:
- コントローラーは実際に作業 (データの組み立て、ビューのインスタンス化、領域への表示など) を行い、アプリケーションの状態 (表示されたコンテンツなど) を反映するように URL を更新できます。
- ルーターは、アドレス バーに入力された URL に基づいてコントローラー アクションをトリガーするだけです。
したがって、基本的に、アプリの開始ページにいる場合は、ルーターを必要とせずに正常に動作するはずです。アクション (メニュー エントリのクリックなど) は、さまざまなコントローラー アクションを起動するだけです。
次に、「この URL が呼び出されたら、このコントローラー アクションを実行する」というルーターを追加します。そして、コントローラー内で、表示される URL を で更新しますnavigate("my_url_goes_here")
。合格しないことに注意してくださいtrigger: true
。
詳細については、Derick のブログ投稿http://lostechies.com/derickbailey/2011/08/28/dont-execute-a-backbone-js-route-handler-from-your-code/ (段落「 AHA!" Router.Navigate の 2 番目の引数に関する瞬間")
このトピックについては、マリオネットに関する私の本の無料プレビューでも詳しく説明しています。こちらの 32 ~ 46 ページを参照してください: http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf