Выполните функцию перед изменением маршрута в Backbone.js - PullRequest
8 голосов
/ 24 февраля 2012

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 16 апреля 2014

Похоже, что 1.1.x релиз Backbone имеет то, что вы хотите с Router.execute метод:

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

  // fired before every route. 
  execute: function(callback, args) {
    // ...
  }
});
2 голосов
/ 17 марта 2016

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

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 голосов
/ 22 июля 2014

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

this.bind ("all", this.ACL);

Здесь ACL является функцией

0 голосов
/ 19 марта 2012

Этот плагин делает то, что вы хотите. Работает с 0.5.3. Я не уверен, работает ли он с 0.9.1 или нет.

https://github.com/angelo0000/backbone_filters

...