Backbone ha un "router" (che è sostanzialmente quello che ho imparato a conoscere come controller). Puoi usarlo per fare la navigazione. Ad esempio:
var MyApp = new Backbone.Router();
MyApp.navigate('newPage', {trigger: true});
il trigger assicura che venga generato un evento nel caso in cui si stiano utilizzando tali eventi.
È possibile associare il router alla "cronologia" di Backbone e creare facilmente un'applicazione di una sola pagina piuttosto impressionante.
Modifica: Non importa, ho appena riletto che non volevi usare un percorso. I miei due centesimi: fai un wrapper per fare la navigazione per te. Ho appena dovuto refactoring una grande applicazione javascript poche settimane fa, eliminando un centinaio di window.locations in modo che potesse essere testato su unità. Non molto divertente. Cioè:
MyApp = {
navigate: function (url) { window.location = url; }
}
Ora si può effettivamente fare unit testing, come si può ignorare MyApp.navigate con qualcosa che non fa nulla quando viene chiamato. È inoltre possibile aggiungere la logica di business se necessario .. o filtri .. o qualsiasi altra cosa .. senza dover disturbare il resto dell'applicazione. Ad esempio, se l'url è al di fuori del sito, aprilo in una nuova finestra invece di mostrarlo nella stessa pagina.