10

すべてのページリクエストを自分のにリダイレクトし、アプリでindex.htmlリンク(#urls-/ real / urlsではない)をクリックして実行するrouter.jsようにしたいので、基本的にページの更新はありません-純粋にajaxです。バックボーンルーティングとhtaccessでこれを行う簡単な方法はありますか?

{pushState: true}リンクを削除して次のようにフォーマットすると、現時点で機能しています#login。ただし、有効にpushStateしてクリックして#loginも何も起こりません。代わりに、Backboneがを解釈し、#loginレンダリングするルートをたどるのは、ページを更新したときだけloginViewです。

これが私のルーターです:

// Filename: router.js
define( [ 'views/beta/requestInvite', 'views/beta/login' ],
function(requestInviteView, loginView) {
    var AppRouter = Backbone.Router.extend( {
        routes : {
            // Pages
            'login' : 'login',

            // Default
            '*actions' : 'defaultAction'
        },

        // Pages
        login : function() {
            loginView.render();
        },

        defaultAction : function(actions) {
            requestInviteView.render();
        }
    });

    var initialize = function() {
        var app_router = new AppRouter;
        Backbone.history.start({pushState: true});
    };
    return {
        initialize : initialize
    };
});

私がしたいのは、requestInviteViewへのリンクを/loginクリックすると、URLがに変わり/loginloginViewがレンダリングされるということです。

助けてくれてありがとう!

4

2 に答える 2

10

ハッシュからプッシュステートへの変更は、単一のパラメーターを 1 つのように変更することが考えられるほど簡単ではありません。私がしていることは、ビューでクリック イベントをキャッチし、app.navigate を呼び出してルートをトリガーすることです。

app.navigate("/login", {trigger: true});

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

于 2012-06-06T16:41:25.843 に答える