我试图使用Backbone.js来处理浏览器历史记录。我没有设置视图/模型,因为我不希望它来处理这个问题,并且可能因为这个原因,我没有得到它的正常工作。使用Backbone.js处理浏览器历史记录
在这一点上我的网页正在改变网址。像:
domain.com/services
domain.com/products
domain.com/contact
domain.com/gallery
domain.com/gallery/photo1
问题是:如果我尝试重新加载页面在domain.com/gallery/photo1。我收到错误未捕获的语法错误:意外的代币<
所有其他只有一级永久链接的页面可以在重新加载时正常工作。我在Backbone上丢失了什么?
我只是使用Backbone.Router和Backbone.history。
有没有关于如何使用backbone.js设置网站的简单教程?只是历史的事情?
这里是我的脚本:
var Router;
var myRouter;
$(document).ready(function(){
Router = Backbone.Router.extend({
initialize : function(options) {
//
},
routes: {
'' : 'home',
'*actions' : 'pages'
},
home : function() {
this.render('/');
},
pages : function(actions) {
this.render(actions);
},
render : function(path) {
var fullLine = '';
path = (path === '/' || path === '')? '/' : path;
console.log('path: ' + path);
}
});
myRouter = new Router();
Backbone.emulateHTTP = true;
Backbone.emulateJSON = true;
Backbone.history.start({pushState: true, root: "/backbone_teste/"});
// MENU CLICK
$('.menu').children('li').each(function(){
$(this).click(function(){
myRouter.navigate($(this).attr('data-id'), true, true);
});
});
});
感谢您的帮助!
“未捕获的SyntaxError:意外的标记<”,这表明有人试图解释HTML的JSON。你能告诉我们一些代码吗? – 2012-07-23 22:25:51
已编辑帖子。我只是添加了这个选项来仿真HTTP和emulateJSON来查看它是否解决了这个问题。我还没有加载任何东西。如果我将pushState更改为false并尝试访问domain.com/#gallery/photo1,它可以正常工作,但我不想要哈希!谢谢 – 2012-07-24 14:21:50
我在localhost/backbone_teste上运行这个例子,我有一个.htaccess文件mod_rewrite。也许这与我的问题有关。 – 2012-07-24 14:33:56