ルートを処理するこれら 2 つの方法の違いは何ですか?
var Router = Backbone.Router.extend({
routes: {'home': 'showHome},
showHome: function() {//do whatever}
});
と
var Router = Backbone.Router.extend({
routes: {'home': 'showHome},
initialize: function() {
var router = new Router();
router.on('route:showHome', function(){//do something});
}
});
現在、私はそれを2番目の方法で持っています。それはうまく機能し、私は正しい場所に着きます..
私のルーターは適切にセットアップされましたが(私は思う)、私のルートはまだ奇妙な動作をしています(次のように)。
私が抱えている唯一の問題は、ルートを変更しようとすると、正しいページに到達する前にアドレスバーが複数の異なるルート間でちらつくことです (常に正しい場所に到達します)。
window.location = '#/route';
ビュー内のjQueryリスナー内で使用するページを変更しています。
$('#right_arrow').live('click', {view: that}, this.rightArrow);
...
rightArrow: function(e){
var that = e.data.view;
if(typeof window.easyUserData.fbResponse.authResponse === 'undefined') {
// Not logged in
window.location = '#/login';
} else {
// Logged in
window.location = '#/notes/right';
}
return false;
}
私はデバッグしようとしていて、ブレークポイントをに設定したときに見つけたものwindow.location = '#/notes/right';
:
- URL は適切に変更されます ('#/notes/right')
- return false 実行
- 右矢印関数が終了し、デバッガーが jquery コードに入ります
- デバッガーで 5 ~ 6 回の「ステップ オーバー」を行った後 (まだ jquery コード内)、URL が「#/news/right」に変わります。
- さらに数回「ステップオーバー」した後、元のブレークポイントに戻り、URL が正しい「#/notes/right」に変更されます
- 新しいビューがロードされます
なぜこのように振る舞うのですか?ルーターの設定方法に関連していますか?