2012-02-24 3 views
8

Как я могу получить уведомление до того, как маршрутизатор Backbone вызовет определенную функцию маршрутизации?Выполнение функции перед изменением маршрута в Backbone.js

Я хотел бы иметь общую функцию «перезагрузки» перед рендерингом каждой страницы.

Есть ли какие-либо события, которые я могу связать?

Обновление: найденные решения основаны на расширении маршрутизатора или истории, чтобы вызвать событие.

+0

У меня есть решение этой проблемы в этом ответе: http://stackoverflow.com/a/16298966/2330244 –

ответ

9

Похоже 1.1.x release системообразующих имеет то, что вы хотите с помощью метода Router.execute:

MyRouter = Backbone.Router.extend({ 
    routes: {}, 

    // fired before every route. 
    execute: function(callback, args) { 
    // ... 
    } 
}); 
0

Я буду использовать это в конструкторе, и это работает прекрасно

это. bind ("all", this.ACL);

Здесь ACL функция

2

, если выполнение функции присутствует будет вызываться перед каждым изменением маршрута, но вы должны передать аргументы в функции обратного вызова, чтобы правильно выполнить другие подходящие маршруты.

MyRouter = Backbone.Router.extend({ 
     routes: {}, 

     // fired before every route. 
     execute: function(callback, args, name) { 
     //your logic 
     if (callback) callback.apply(this, args); //this must be called to pass to next route 
     }, 
    }); 
+0

Пожалуйста, добавьте некоторые комментарии о своем решении о том, почему и как она решает эту проблему –