2012-04-15 14 views
1

私はそれを失っている必要があります。私は最も簡単なバックボーンアプリを設定しましたが、ルートを返すようには見えません。ルートに応答していないバックボーン

class BackboneSupport.Routers.TicketsRouter extends Backbone.Router 
    initialize: -> 
    @tickets = new BackboneSupport.Collections.TicketsCollection() 

    routes: 
    "/new"  : "newTicket" 
    ".*"  : "index" 

    newTicket: -> 
    alert 'hi, from the new ticket route' 

    index: -> 
    // just to prove a point 
    $('#tickets').html('tickets go here') 
    @navigate('/new') 

そして私はで移動全体の列車を得る:ここに私のルータは、(CoffeeScriptの中で)だ

<div id="tickets"></div> 

<script type="text/javascript"> 
    $(function() { 
    window.router = new BackboneSupport.Routers.TicketsRouter(); 
    Backbone.history.start(); 
    }); 
</script> 

あなたが予想されるように、ルートルート(インデックス)はプレースホルダーテキストで#ticketsを移入し、正常にナビゲート(アドレスバーを介して確認された)/ newルートには、何も警告しません。つまり、newTicketメソッドがトリガされていないことを意味します。

私はここで何が欠けていますか?

UPDATE:

以下rjzパー、私は更新されNavigateメソッドへ:

@navigate('/new', {trigger: true}) 

しかし、不思議なこと、まだありません警告:/

+0

である。 'newTicket'を呼び出すためには、トリガオプションをtrueに渡したいと思うでしょう。詳細については、http://documentcloud.github.com/backbone/#Router-navigateを参照してください。 – rjz

+0

ハ!ありがとう。私の更新を参照してください、それはまだ新しいルートを起動しません。 – imderek

答えて

5

あなたは先頭のスラッシュを持つべきではありませんあなたのルートには、これが欲しい:

class BackboneSupport.Routers.TicketsRouter extends Backbone.Router 
    routes: 
    "new": "newTicket" 
    ".*" : "index" 
    #... 

デモ:fine manualからhttp://jsfiddle.net/ambiguous/veSDF/1/

Backbone.Router.extend(properties, [classProperties])

[...]あなたは、ルート定義に先頭のスラッシュを使用しないようにしたいでしょう注意を延長

+0

ビンゴ!ありがとうございます。 – imderek