2011-09-22 5 views
30

私の「ビュー」は以下のように設定されています。シンプル。Backbone.js - ビュー上の「クリック」イベントの後の経路にナビゲートする

var ItemView = Backbone.View.extend({ 
    tagName : "li", 

    events : { 
    "click" : "display" 
    }, 

    display : function() { 
    //app.navigate('item'); // take me to my route! 
    } 
}); 

そして私は、私のルータが

var App = Backbone.Router.extend({ 

    routes: { 
    "" : "index", 
    "item" : "view_item" 
    }, 

    index: function() { 
    alert('hi!'); 
    }, 

    view_item: function() { 
    alert('bye!'); 
    } 
}); 

app = new App(); 
Backbone.history.start(); 

、私はItemViewをクリックしたとき、それは「表示」メソッドを実行する必要があると私は、表示方法は、私がルートに指定されたルートに私を取るしたいです"項目"。

これは可能ですか?私は "ナビゲート"機能は動作すると思ったが、そうではない。どうすればこれを達成できますか?

答えて

49
display : function() { 
    app.navigate('item', true); 
    } 

第2パラメータをtrueに設定する必要があります。

バックボーンのドキュメントから:

navigaterouter.navigate(フラグメント、[triggerRoute]) あなたがURLとして保存したいアプリケーション内のポイントに到達するたびに順番にナビゲート呼び出しますURLを更新してください。ルート関数も呼び出す場合は、triggerRouteを渡します。

+7

バックボーンのdocsに対応する別の方法: 'app.navigate( 'item'、{trigger:true});' – Daan

+3

あなたがスコープ内に 'app'ルータを持っていなければ、あなたは'Backbone.history.navigate(url、options)'を使うことができます。 – LeeGee

0

「< a>」タグを使用している場合は、htmlから直接行うこともできます。

例:

<a href="#item">Show Itens</a> 

また、動作しますが、私はもちろん可能である。この方法を好みます。

関連する問題