6

開くとURLが変わるモーダルポップアップがあります。ユーザーがポップアップを閉じると、以前の URL に戻りたいのですが、その URL に関連付けられたルートをトリガーしたくありません。これにより、コレクションがリロードされ、ビューなどがレンダリングされるためです。window.history.back()トリガーせずに呼び出す方法はありますか?ルート、またはこれに相当するバックボーンはありますか?

私が考えることができる唯一の解決策は、前のルートを保存し、モーダルが閉じられたときに呼び出すことです

Backbone.history.navigate(route, {trigger: false, replace: true});

しかし、これは簡単な問題を解決するための複雑な方法のようです。

4

1 に答える 1

5

ルーターに履歴を保存することは私にとって良い解決策のように思えますが、この問題を解決するより良い方法を見つけることができませんでした.

その良い解決策はここにあります: Backbone.jsを使用してURLを以前にサイレントに変更します

微調整を行うので、次のようになります。

class MyRouter extends Backbone.Router

  initialize: (options) ->
    @on "all", @storeRoute
    @history = []

  storeRoute: ->
    @history.push Backbone.history.fragment

  previous: ->
    if @history.length > 1
      @navigate @history[@history.length-2], false
    else
      @navigate '', true

その後、MyRouter.previous() を呼び出すだけで、直接リクエストした場合はルートに移動します。

少なくとも最後の 5 つのルートを保持できるように、これがルーターのデフォルト機能であってほしいと思います。

于 2012-12-09T07:36:59.890 に答える