Empêcher le rechargement complet de la page sur Backbone pushState

Je suis en train de prévenir pleine page est rechargée à l'aide de la Dorsale du pushState. Quand je l'appelle naviguer() de mon point de vue, je vois les messages marqués //1 ci-dessous, mais ce n'est pas //2. De plus, lorsque j'essaie d'ouvrir le même onglet, la page se recharge à nouveau.

Dois-je arrêter de l'événement lui-même? J'ai essayé à l'aide de jQuery preventDefault(), qui empêche le rechargement de la page, mais je n'ai pas vu ce document n'importe où.

Ci-dessous mon code actuel:

App.Router = Backbone.Router.extend({
routes:{
"analytics":"analytics"
, "realtime":"realtime"
}
, analytics:function(page) {
console.log("analytics route hit: %o", page); //2
}
, realtime:function(page) {
console.log("realtime route hit: %o", page); //2
}
});
App.TabSetView = Backbone.View.extend({
initialize:function() {
this.collection.bind("reset", this.render, this);
this.collection.bind("add", this.render, this);
this.collection.bind("change", this.render, this);
this.collection.bind("remove", this.render, this);
}
, events:{
'click li.realtime a':  "onRealtime"
, 'click li.analytics a': "onAnalytics"
}
, render:function() {
//omitted for brevity
}
, onAnalytics:function() {
console.log("onAnalytics"); //1
if (this.collection.activateAnalytics()) {
App.app.navigate("analytics", true);
this.render();
console.log("navigated");
} else {
console.log("do nothing"); //1
}
}
, onRealtime:function() {
console.log("onRealtime");
if (this.collection.activateRealtime()) {
App.app.navigate("realtime", true);
this.render();
console.log("navigated");
} else {
console.log("do nothing"); //1
}
}
});
var tabs = ...; //omitted for brevity
var tabSetView = new App.TabSetView({collection: tabs});
var App.app = new App.Router;
Backbone.history.start({pushState:true});

source d'informationauteur François Beausoleil