2011-07-21 72 views
1

我正在嘗試創建我的第一個BB應用程序。它會好的,但我有一個問題。我的路由器是這樣的:backbone.js中的默認路徑問題

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/

回答

2

使用正則表達式,在initialize功能手動添加的路由。

... 
initialize: function() { 
    this.route(/\/?/, 'index', this.index); 
}, 
index: function() { 
    alert('It works!'); 
}, 
... 

這與{pushState: true}正常工作。

http://jsfiddle.net/sergio/WpKPP/

http://jsfiddle.net/sergio/WpKPP/show

+0

這覆蓋了其他路線。檢查小提琴的子網址http://jsfiddle.net/sergio/WpKPP/show/sea​​rch/ – Lex

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);導致它重寫我的其他途徑。