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和更低版本上不起作用)。