我有一个复杂的,多级继承的应用程序,我想使用Backbone.Router进行导航,但它不能像我预期的那样工作。
应用程序的地址不在根目录
下像这样: http://www.domain.com/App
我想使用BB的路由
以下是一些代码:
$(function () {
var SayfaController = Backbone.Router.extend({
routes: {
"": "home",
"sayfa/:sayfaNo": "sayfa"
},
initialize: function () {
console.log('THIS WORKS');
},
home: function () {
console.log('THIS DONT FIRE');
},
sayfa: function (sayfa) {
console.log("NEITHER THIS FIRES");
console.log(sayfa);
}
});
var sayfaController = new SayfaController();
Backbone.history.start({pushState: true});
....
});
初始化方法有效但是 当我点击这样的链接时,事件不会触发:
<a href="http://www.domain.com/App/#/sayfa/6">Click</a>
或更改浏览器导航栏
我做错了什么
答案 0 :(得分:0)
您需要初始化功能吗?这可能正在取代路由器的骨干设置,这可能是其他功能/视图未触发的原因。
答案 1 :(得分:0)
从一眼看,您似乎需要指定应用的根目录,因为它不是从域的根目录提供的。请参阅Backbone docs RE:Backbone.history:
如果您的申请未通过您的根网址提供 域名,请务必告诉历史根目录的真实位置 选项:Backbone.history.start({pushState:true,root: “/公共/搜索/”})
尝试Backbone.history.start({pushState: true, root: "/App/"});
答案 2 :(得分:0)
我不确定如何让它适用于类型的网址
http://www.domain.com/App/#/sayfa/6
但是对于它下面的那种它可行。
http://www.domain.com/App#sayfa/6
http://www.domain.com/App
使用
Backbone.history.start({
root : "/App"
});
这是jsfiddle http://jsfiddle.net/nEmeL/4/