所以我有以下主干路线:
Nightbird.Routers.Errors = Nightbird.Routers.Core.extend({
routes: {
'server_error': 'serverError',
},
initialize: function(){
console.log('dasddasd');
},
serverError: function() {
console.log('asdasdasd');
var serverErrorView = new Nightbird.Views.ServerError();
serverErrorView.render();
}
});
它确实进入了这个类,因为正在调用initialize
函数,当这个路由加载时我在控制台中看到:dasddasd
,但我看不到asdasdasd
网址为localhost:9000/#server_error
有人可以解释我做错了什么吗?我不知道还有什么我想提供更多信息,所以请询问任何其他细节。
以下是应用注册的方式:
window.Nightbird = {
Models: {},
Collections: {},
Views: {},
Routers: {},
blogId: 0,
initialize: function() {
if (window.Development === undefined && window.Production === undefined) {
throw 'Production class (Production.config.js) cannot be missing. App Cannot load.';
}
if (window.Development !== undefined) {
this.blogId = window.Development.BLOG_ID;
} else {
this.blogId = window.Production.BLOG_ID;
}
new Nightbird.Routers.Posts();
new Nightbird.Routers.Errors();
if (!Backbone.History.started) {
Backbone.history.start();
} else {
Backbone.history.stop();
Backbone.history.start();
}
}
}
此课程扩展:
Nightbird.Routers.Core = Backbone.Router.extend({
serverError: function(){
Backbone.history.navigate("server_error", {trigger: true});
}
});
为什么这么简单的抽象,因为这样任何问题的获取或发布或者你有什么可以将你重定向到服务器错误路由。
然后在我的index.html
我做:
<!DOCTYPE html>
<html>
<body>
<div id="manage">
</div>
</body>
<script src="js/compiled.js"></script>
<script>
Nightbird.initialize();
</script>
</html>
答案 0 :(得分:1)
我猜问题就是你实例化Backbone Router的方式 尝试创建继承自Backbone.Router的Backbone路由器。
当您检查Backbone.History.started是否为true时,可能不是。所以它会转到else语句,那时Backbone.History.star()是未定义的。所以它永远不会启动Backbone.History
希望它有所帮助。