2012-12-04 9 views
6

Come utilizzerei lo Scrollspy di Bootstrap quando utilizzo il routing basato su hash Backbone.js?Scrollstrada bootstrap e routing backbone

Backbone ad esempio router, che crea pagina www.example.com/#somePage/123

var AppRouter = Backbone.Router.extend({ 
    routes: { 
     "": "home", 
     "somePage/:id": "somePage" 
    }, 
    somePage: function (id) { 
     console.log("do something"); 
    } 
}); 

$(document).ready(function(){ 
    window.app = new AppRouter(); 
    Backbone.history.start(); 
});  

Twitter scrollSpy esempio che dovrebbe aggiungere # ancora-valore fino alla fine della URL:

<div id="navbar" class="row-fluid"> 
     <ul class="nav nav-pills navbar"> 
      <li class="active"> 
       <a href="#step1">1</a> 
      </li> 
      <li> 
       <a href="#step2">2</a> 
      </li> 
     </ul> 
    </div> 
    <div data-spy="scroll" data-target=".navbar"> 
     <h4 id="step1">Step 1</h4> 
     <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p> 
     <h4 id="step2">Step 2</h4> 
     <p>Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.</p> 
    </div> 

Questo vuole trasformare l'URL in qualcosa come www.example.com/#somePage/123#step1, che non funziona.

+1

Questo post ha risposto alla mia domanda http://stackoverflow.com/questions/11672687/anchors-in-links – abritez

risposta

0

Ecco una possibile soluzione usando il Bootstrap demo Scrollspy: https://jsfiddle.net/8wvdpddq/

Supponendo che si desidera avere l'URL aggiornato e un punto della storia aggiunto come l'utente scorre, il seguente codice dovrebbe raggiungerlo:

$('body').on('activate.bs.scrollspy', function() { 
    var active = $('nav li:not(.dropdown).active a').attr('href').slice(1); 
    window.app.navigate(active, {trigger: true}); 
    console.log('update url/history to ' + active); 
}) 

In questo caso, viene impostato anche trigger, ovvero i gestori del routing si attiveranno, se non si desidera, rimuovere questa opzione.