【问题标题】:Backbone pushState routes骨干 pushState 路由
【发布时间】:2014-04-22 11:39:03
【问题描述】:

我正在尝试处理backbone.js pushState 以更改漂亮网址上的主题标签。使用localhost,我的脚本路径是http://localhost/test/backbone/test.html。但是每次点击都会把我扔到localhost/login。我做错了什么?

var AppRouter = Backbone.Router.extend({
    routes: {
        "login": "getPost",
        "*actions": "defaultRoute"
    }
});

var app_router = new AppRouter;

app_router.on('route:getPost', function (id) {
    alert( "login" );   
});

app_router.on('route:defaultRoute', function (actions) {
    alert( actions ); 
});

app_router.navigate("/login", {trigger: true});
Backbone.history.start({pushState: true, root: '/login/'});

【问题讨论】:

  • 哪个click在哪里?
  • <a href="/login">login</a> 也许我有什么不明白的地方?我应该为点击添加处理程序(例如返回 false 或 prevent.default 链接?)

标签: javascript backbone.js pushstate


【解决方案1】:

你需要添加:

$(document).delegate("a", "click", function(evt) {
    var href = $(this).attr("href");
    var protocol = this.protocol + "//";

    if (href.slice(protocol.length) !== protocol && protocol !== 'javascript://' &&      href.substring(0, 1) !== '#') {
        evt.preventDefault();

        Backbone.history.navigate(href, true);
    }
});

最后两个字符串应该是:

app_router.navigate("/login", {trigger: true}); // <- should remove this string
Backbone.history.start({pushState: true, root:"test/backbone/test.html"});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多