2011-07-21 6 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. 
}); 

ないのはなぜルータ火災のindexアクション?何か間違っていますか?このコードに他の問題はありますか?

フルアプリはここで見つけることができます: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/show

+0

これは他のルートを上回ります。サブURL http://jsfiddle.net/sergio/WpKPP/show/sea​​rch/でフィドルをチェックしてください – Lex

0

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

は、私はそれを読んだところ、私はあなたがルータ上で 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);を使用すると、他のルートより優先されます。

関連する問題