我正在尝试创建我的第一个BB应用程序。它没问题,但我遇到了问题。我的路由器看起来像这样:
var PlayersAppRouter = Backbone.Router.extend({
routes: {
'': 'index',
},
initialize: function () {
this.model = new PlayersAppModel({});
this.view = new PlayersAppView({model: this.model});
},
index: function () {
alert('It works'); //<-- It doesn't
},
});
后来我的代码中有:
$(function () {
window.app = new PlayersAppRouter;
Backbone.history.start({pushState: true});
app.model.players.reset(<?php require('players.php'); ?>); //<-- players.php loads a bunch of JSON data.
});
现在,为什么路由器的索引操作没有激活?我做错了什么?这段代码还有其他问题吗?
可以在此处找到完整的应用:http://development.zeta-two.com/development/f14/
答案 0 :(得分:3)
答案 1 :(得分:2)
使用正则表达式,在initialize
函数中手动添加路径。
...
initialize: function() {
this.route(/\/?/, 'index', this.index);
},
index: function() {
alert('It works!');
},
...
这适用于{pushState: true}
。
答案 2 :(得分:0)
不记得我在哪里读,买,我发现你必须在路由器上拨打initialize
。这是我的工作示例,在jquery.ready
函数内部触发。
MainView = new View.main();
appRouter = new Router();
// set up single page app with push state
Backbone.history.start({pushState: true});
appRouter.initialize();
路由配置。
routes: {
"": "index"
}
使用@ serg.io回答this.route(/\/?/, 'index', this.index);
导致它覆盖我的其他路线。