Backbone Router初始化但不会触发事件

时间:2013-03-21 15:16:09

标签: javascript backbone.js routes

我有一个复杂的,多级继承的应用程序,我想使用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>

或更改浏览器导航栏

我做错了什么

3 个答案:

答案 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/