2012-03-07 110 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