Есть много способов приблизиться к этому, и это действительно зависит от того, как вы делаете навигацию. Если вы меняете маршруты с помощью реальных ссылок или с помощью router.navigate()
, ваш router
отправит событие route:<route name>
, которое вы можете прослушать, передавая те же аргументы обработчику, что и функции маршрутизации.
В том, что оказалось демонстрацией того, сколько времени потребуется для настройки кода тестового примера с помощью Backbone, я сделал вам jsFiddle для иллюстрации этого подхода: http://jsfiddle.net/nrabinowitz/ZrgJF/7/
Многое из этого просто код установки; важными частями для этого вопроса являются маршрутизатор:
var MyRouter = Backbone.Router.extend({
routes: {
'view/:id' : 'openView'
},
openView: function(id) {
app.openView(id)
}
});
router = new MyRouter();
И вид, который связывает удаление с маршрутом:
var MyView = Backbone.View.extend({
initialize: function(opts) {
this.id = opts.id;
router.bind('route:openView', this.dispose, this);
},
// id is the same as the route argument
dispose: function(id) {
if (id != this.id) {
this.remove();
}
}
// etc
});