2012-02-20 14 views
7

これは非常に簡単な質問です。ビューでは、ボタンをクリックするとそのイベントがクリックされます。完全に新しいページにリダイレクトしたいと思います)。バックボーン別のページに移動

events : {  
    "click .button" : 'redirect' 
}, 
redirect : { 
    window.location('otherlink'); 
} 

私はwindow.locationを使用することができますが、それは間違った方法ですか?任意のアイデアは評価?

答えて

2

単純には<a href="otherlink">Link Title</a>を使用します。リンクが動的であれば、私はリンクをレンダリングし、彼の状態とhrefを管理するビューに頼っています。

ユーザーがevent.preventDefault()falseを返すために回避することなく、二次ページの使用とイベントハンドラを手放す前に何かを行う必要がある場合。

13

バックボーンには「ルーター」(基本的にコントローラとして知っているもの)があります。これを使ってナビゲーションを行うことができます。例:

var MyApp = new Backbone.Router(); 
MyApp.navigate('newPage', {trigger: true}); 

トリガーは、前記のイベントを使用している場合にイベントがスローされるようにします。

ルータをBackboneの「履歴」とチーム化して、非常に素晴らしい1ページアプリケーションを非常に簡単に構築できます。

編集:決して気にしないで、ルートを使いたくないと再読んだだけです。私の2セント - あなたのためのナビゲーションを行うラッパーを作ってください。数週間前にかなり大きなjavascriptアプリケーションをリファクタリングしなければならなかったので、ユニットテストができるようにwindow.locationsを数百回取り出していました。それほど楽しいことではありません。すなわち:あなたが呼び出されたときに何もしない何かをMyApp.navigateを上書きすることができますよう

MyApp = { 
    navigate: function (url) { window.location = url; } 
} 

今、あなたは実際に、ユニットテストを行うことができます。また、アプリケーションの残りの部分を妨害することなく、必要に応じてビジネスロジックを追加することもできます。たとえば、URLがサイト外にある場合は、同じページに表示するのではなく、新しいウィンドウでURLを開きます。

関連する問題