1

を使わずにブラウザの履歴を書き換えることはできhistory.pushStateますか?

次のようなルーターを備えたバックボーン アプリケーションがあります。

routes: {
    'posts': 'posts',
    'modal': 'modal'
},

'before': function (args) {
    //check if logged in
        //do some various other setup tasks
    //maybe delete modal routes from the history?

    //forward to route
    args.next()
},

'posts': function () {
    //make and show posts
},

'modal': function (params) {
    //edit user email preferences OR
    //create a new post OR
    //do various other crud operations
}

モーダル ルートが起動されるたびに、ハッシュがブラウザの履歴状態に書き込まれないようにしたいと考えています。その理由は、ユーザーは履歴をさかのぼるときにモーダルを再度開いてはならないからです。

バックボーンのソース コードを調べましたが、単純にhistory = [].

プッシュ状態なしでこれを行う方法はありますか?

4

1 に答える 1

0

router.navigate(fragment, [options]) 関数の replace オプションを true に設定しようとしましたか?

これは、ブラウザの履歴にエントリを作成せずに URL を更新することになっています

http://backbonejs.org/#Router-navigate

ボタン クリック イベントを処理している場合は、ルーター クラスではなくビューで処理する必要があります。

例:

class MyView extends Backbone.View

    events :

        'click #backButton'    :    'onClick'


    initialize : ->

           #Some Stuff


    render: ->

           #Some Stuff


    onClick: ( e ) ->

           router.navigate '/projects', {replace : true }
于 2013-02-25T23:25:15.157 に答える