0

私のアプリのインデックス ページはhttp://cms/admin(私は localhost にいます) にあります。インデックス ページには、a要素が 1 つだけあります。

<a href="/admin/test">deneme</a>

リンクをクリックすると、/cms/admin/test

BackboneJS のルーティング メカニズムを使用して、アプリを ajax 対応アプリに変換したいのですが、今までできませんでした。これが私のJSコードです:

$(function() {
    var AppRouter = Backbone.Router.extend({
        routes: {
            "test": "defaultRoute"
        },

        defaultRoute: function() {
            console.log('its here');
        }
    });

    var appRouter = new AppRouter();

    Backbone.history.start({
        pushState: true,
        slient: true,
        root: '/admin/'
    });
});

ページを実行してリンクをクリックすると、コンソールには何も記録されず、ブラウザはリンクをたどります。ページが読み込まれると、「その場所」メッセージがログに記録されます。

「test」の代わりに「/admin/test」というルートパラメータなしですでに試しました。「test」、「/test」、「test/」、「/admin/test」、「admin/test」などのすべての組み合わせを試しました.

ありがとう。

4

2 に答える 2

3

リンクのデフォルトの動作をオーバーライドする必要があります。

を明示的に呼び出してページ間を移動する必要がありますappRouter.navigate("test", {trigger: true});したがって、 View.events内のリンクでクリックイベントをキャプチャし、リンクのデフォルトの動作を防ぎ、 appRouter.navigate ()を呼び出すようにしてください

アップデート

また、バッチでこれを行うことができます:

$("a.bb_link").each( function( index, link ){
  $(link).click( function( event ){
    event.preventDefault();
    appRouter.navigate( $(this).attr( "href" ), {trigger: true} );
  });
});​

クラスを持つすべてのリンクはbb_link、Backbone.Router を使用します。

于 2012-08-20T21:05:00.227 に答える
1

次のようにアンカー タグを設定してみてください。

<a href="#admin/test">deneme</a>

ハッシュ (#) に注意してください

于 2012-08-20T21:03:45.440 に答える