【问题标题】:Backbone Router initializes but dont fire the events骨干路由器初始化但不触发事件
【发布时间】:2013-03-11 04:33:15
【问题描述】:

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

    ....
});

initialize 方法有效,但是 当我点击这样的链接时,事件不会触发:

<a href="http://www.domain.com/App/#/sayfa/6">Click</a>

或更改浏览器导航栏

我做错了什么

【问题讨论】:

  • 应用链接出现 404 错误
  • @kinakuta 这是一个例子 :) www.domain.com 不是我的 :)
  • Editor 初始页面吗?如果索引页面是http://www.matbuu.bizim/,那么当访问此 url 时,主页将运行。 sayfa 将在 http://www.matbuu.bizim#sayfa/123 时运行。除非您在使用 # 时进行了修改
  • 对不起,我编辑了链接
  • @ashley 初始页面是 domain.com/App 我想运行 domain.com/App/#/sayfa/6 并获取 6 作为参数

标签: javascript backbone.js routes


【解决方案1】:

乍一看,您似乎需要指定应用的根目录,因为它不是从您的域的根目录提供的。请参阅 Backbone 文档 RE:Backbone.history:

如果您的应用程序不是从您的根 url / 域,一定要告诉历史根的真正位置,作为 选项:Backbone.history.start({pushState: true, root: "/public/search/"})

试试Backbone.history.start({pushState: true, root: "/App/"});

【讨论】:

    【解决方案2】:

    我不知道如何让它适用于类型的网址

    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/

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多