我的应用程序的索引页面位于http://cms/admin
(我在localhost上)。在索引页面上只有一个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/'
});
});
当我运行页面并单击链接时,它不会将任何内容记录到控制台,浏览器会跟随链接。页面加载后,它会记录“此处”消息。
我已经尝试过没有root参数,“/ admin / test”而不是“test”。我尝试了各种组合:“test”,“/ test”,“test /”,“/ admin / test”,“admin / test”等。
感谢。
答案 0 :(得分:3)
您必须覆盖链接的默认行为。
您必须在显式调用appRouter.navigate("test", {trigger: true});
的页面之间移动。因此,请尝试在View.events,prevent the default behavior of the link内的链接上捕获点击事件并致电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。
答案 1 :(得分:1)
尝试按如下方式设置锚标记:
<a href="#admin/test">deneme</a>
注意哈希(#)