2016-05-04 15 views
0

backbone.jsプロジェクトでは、window.location.hashが変更されたときにのみトリガされるメソッドが必要です。私はhereと私の問題のためのいくつかの代替ソリューションを見つけました。backbone.jsイベントデリゲートで "hashchange"イベントを使用するには?

また、私は

Backbone.View.extend({ 
    initialize() { 
     $(window).on('hashchange',()=> { 
      console.log('yes hashchange events works') 
     }); 
    } 

以下のように私のバックボーンビューinitialize functionでイベントを作成することで、この問題を解決することができますしかし、私は事前

backbone.js's eventDelegatesまたは listenTo

感謝を使用して解決策を模索します

答えて

2

この範囲にはBackbone.historyを使用できます。

履歴、なhashchange イベントまたはpushStateを処理する適切な経路に一致し、そして コールバックをトリガーする(フレーム毎)グローバルルータとして機能します。 Backbone.historyには既に1つが含まれているので、自分自身で の1つを作成する必要はありません。

それがコールバックをトリガするので、あなたはhashchangeイベントをリッスンすることができます

Backbone.history.on("all", function (route, router) { 
    console.log(window.location.hash); 
}); 

または

Backbone.history.on("route", function() { 
    console.log(window.location.hash); 
}); 
+0

おかげでたくさん。これはトリックを行います:) –

+1

残念なことに、 'hashChange'オプションがBackbone.historyに対して' false'に設定されているため、残念ながら、この回避策はトリックでした: ' window.addEventListener(' hashchange ' 、this.handleHashChange); ' – RZ87

0

機能を初期化するために、これを試してみてください。

window.addEventListener('hashchange', function { 
    var currentHash = location.hash; 

    console.log('currentHash', currentHash); 
}) 
関連する問題