Javascript 主干线路不工作

Javascript 主干线路不工作,javascript,backbone.js,Javascript,Backbone.js,我正在创建一个简单的主干应用程序,但路由不起作用。这是我的路由器 define(function(require) { 'use strict'; var Backbone = require('backbone'); var Header = require('views/header.view'); var MainBody = require('views/main.body.view'); var Router = Backbone.Router.extend({

我正在创建一个简单的
主干
应用程序,但路由不起作用。这是我的路由器

define(function(require) {
  'use strict';

  var Backbone = require('backbone');
  var Header = require('views/header.view');
  var MainBody = require('views/main.body.view');

  var Router = Backbone.Router.extend({
    routes: {
      "": "main",
      "about/": "about"
    },

    main: function() {
      var header = new Header();
      $('#header').html(header.render());

      var body = new MainBody();
      $('#app').html(body.render());
    },

    about: function() {
      console.log("About");
    }
  });

  return Router;
});

我按预期点击了
/
路线,但当我转到
/about
时,它从未点击过
about
功能。我应该在url的某个地方有一个哈希吗?还有什么会导致这个问题呢?

这是因为路由是显式匹配的,所以
“about/”:“about”
将匹配
/about/
“about”:“about”
将匹配
/about

有一种方法可以同时匹配
/about
/about/
,它需要使用可选的匹配器
(匹配器)
,因此路由哈希键如下所示

"about(/)": "about"

要使无哈希路由正常工作,您需要运行
Backbone.history.start({pushState:true})
根据backbonejs文档,路由器的定义和地址应如下所示:

var Workspace = Backbone.Router.extend({

  routes: {
    "help":                 "help",    // #help
    "search/:query":        "search",  // #search/kiwis
    "search/:query/p:page": "search"   // #search/kiwis/p7
  },

  help: function() {
    ...
  },

  search: function(query, page) {
    ...
  }

});

因此,当您键入
http:///backbonepage#help
,将调用“帮助”功能

您尝试过“关于”吗?成功了。我试过
about
about(/)
两种方法都没用。我得到的错误是
无法获取/app/about
。如果
#about
有效,则运行
主干.history.start()
。要使
/about
正常工作,您需要运行
主干.history.start({pushState:true})
(它在IE8和更低版本上不起作用)。