骨干路由器没有调度?
问题描述:
我是骨干0.9.1的新人。 我发现当我改变哈希,我不能在我的演示中触发哈希变化。 我的网址是http:// [...]/backbone /#help。我想我应该收到一条警告消息“帮助”,但我没有。骨干路由器没有调度?
$(function() {
var App = {
Controllers:{},
initialize: function(){
new App.Controllers.Routes();
var h = new Backbone.History();
h.start({root: '/backbone/'});
}
};
App.Controllers.Routes = Backbone.Router.extend({
routes: {
"help": "help",
"search/:query": "search",
},
help: function() {
alert("help");
},
search: function(query) {
alert("search");
}
});
App.initialize();
});
是否存在一些误解或误用?
答
你不需要自己实例化一个History对象。另外,如果您未使用pushstate,则无需在启动选项中指定root
。
所以,你的初始化方法应该是这样的:
initialize: function(){
new App.Controllers.Routes();
Backbone.history.start();
}
THX对你有所帮助〜 ,但似乎在骨干0.9.1没有骨干的原型的历史了,当我打电话Backbone.history.start ();收到的错误消息:Uncaught TypeError:不能调用未定义的方法'start'。 看起来像路由器在0.9.1中有一些变化? – Hopen 2012-03-09 06:37:01
这在0.9.x中没有改变,而.history属性从来不是Backbone对象原型的一部分。 Backbone.history属性在实例化路由器并定义路由后自动添加。如果您收到此错误,则表示您的路由器未实例化或未正确配置。 – 2012-03-09 12:52:24
将初始化函数更改为 new App.Controllers.Routes(); Backbone.history.start(); 问题已解决。 – Hopen 2012-03-11 06:08:31