0

我的应用程序的索引页面位于http://cms/admin(我在本地主机上)。在索引页面上只有一个a元素:

<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/'
    });
});

当我运行该页面并单击该链接时,它不会将任何内容记录到控制台并且浏览器会跟随该链接。页面加载后,它会记录“它在这里”消息。

我已经在没有根参数的情况下尝试过,“/admin/test”而不是“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 回答