2012-03-07 120 views
0

我是骨干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(); 
}); 

是否存在一些误解或误用?

回答

1

你不需要自己实例化一个History对象。另外,如果您未使用pushstate,则无需在启动选项中指定root

所以,你的初始化方法应该是这样的:


     initialize: function(){ 
      new App.Controllers.Routes(); 
      Backbone.history.start(); 
     } 
+0

THX对你有所帮助〜 ,但似乎在骨干0.9.1没有骨干的原型的历史了,当我打电话Backbone.history.start ();收到的错误消息:Uncaught TypeError:不能调用未定义的方法'start'。 看起来像路由器在0.9.1中有一些变化? – Hopen 2012-03-09 06:37:01

+0

这在0.9.x中没有改变,而.history属性从来不是Backbone对象原型的一部分。 Backbone.history属性在实例化路由器并定义路由后自动添加。如果您收到此错误,则表示您的路由器未实例化或未正确配置。 – 2012-03-09 12:52:24

+0

将初始化函数更改为 new App.Controllers.Routes(); Backbone.history.start(); 问题已解决。 – Hopen 2012-03-11 06:08:31