16

私の理解では、違いは、上のイベントへのコールバック関数が、同じ Router オブジェクトではなく、 にAppRouter存在する必要があることです。Controllerまた、このような AppRouter と Controller の間には 1 対 1 の関係があり、Router からのすべてのコードが Controller に移動するようになりました。では、なぜそれらを使用するのでしょうか。私は何かが欠けている必要がありますか?

4

2 に答える 2

13

私がそれを見る方法は、懸念を分離することです:

  • コントローラーは実際に作業 (データの組み立て、ビューのインスタンス化、領域への表示など) を行い、アプリケーションの状態 (表示されたコンテンツなど) を反映するように 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

于 2013-05-16T07:47:35.123 に答える