【问题标题】:Using Backbone.js to handle browser history使用 Backbone.js 处理浏览器历史记录
【发布时间】:2012-07-22 04:50:45
【问题描述】:

我正在尝试使用 Backbone.js 来处理浏览器历史记录。我没有设置视图/模型,因为我不希望它处理这个问题,并且可能正因为如此,我无法让它正常工作。

此时我的页面正在更改 url。喜欢:

domain.com/services
domain.com/products
domain.com/contact
domain.com/gallery
domain.com/gallery/photo1

问题是:如果我尝试在 domain.com/gallery/photo1 重新加载页面。我收到错误 Uncaught SyntaxError: Unexpected token

只有一级永久链接的所有其他页面在重新加载时都能正常工作。我在 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);
        });
    });
});

感谢您的帮助!

【问题讨论】:

  • "Uncaught SyntaxError: Unexpected token
  • 帖子已编辑。我刚刚将此选项添加到 emulateHTTP 和 emulateJSON 以查看它是否解决了问题。我还没有加载任何东西。如果我将 pushState 更改为 false 并尝试访问 domain.com/#gallery/photo1 它可以工作,但我不想要哈希!谢谢
  • 我在 localhost/backbone_teste 上运行这个示例,并且我有一个用于 mod_rewrite 的 .htaccess 文件。也许这与我的问题有关。

标签: javascript backbone.js browser-history


【解决方案1】:

问题已解决:

我刚刚在我的 index.php 文件的头部添加了以下代码:

<base href="http://localhost/backbone_teste/" />

而且它有效。

无论如何,我想知道为什么会发生这种情况以及为什么 Backbone.js 文档没有提到这一点。

我在这个链接找到了解决方案:HTML5 History / pushState URLs, .htaccess and You

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2015-06-14
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多