Backbone Router无法正常工作

时间:2014-04-18 15:30:27

标签: javascript backbone.js

我现在已经尝试了整整两天。我经历了十字路口,路径,戴维斯和其他10000个图书馆,所有这些都需要大量的依赖或者非常具有侵入性。我只需要一个简单的PURELY HTML5路由器,它不是200kb。我不关心IE6或IE8。

我最近的尝试是集成到主干中的那个。

var Router = Backbone.Router.extend ({
    initialize: function()
    {
        console.log(this);
    },

    routes: {
        '/' : 'home',
        '': 'home',
        'work': 'home',
        '/work': 'home'
    },
    home: function () {
        alert('Backbone sux');
    }
});

var appRouter = new Router(); 
Backbone.history.start({pushState: true}); 

这不应该削减吗?我不应该简单地写

<a href = "/work"></a>  <a href ="/"></a>

看到我美丽的警示信息?

1 个答案:

答案 0 :(得分:0)

正如cclerville所提到的,Backbone不会像你想要的那样自动匹配网址。你必须添加一些脚本来实现这一点。我使用以下内容。

// All navigation that is relative should be passed through the navigate
// method, to be processed by the router. If the link has a `data-bypass`
// attribute, bypass the delegation completely.
//
// @link https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
$(document).on('click', 'a[href]:not([data-bypass])', function(event) {
    var href = $(this).prop('href'),
        root = location.protocol + '//' + location.host + module.config().rootUrl + '/';

    if (href.slice(0, root.length) === root) {
        event.preventDefault();

        Backbone.history.navigate(href.slice(root.length), true);
    }
});