2012-02-24 20 views
8

Jak mogę otrzymać powiadomienie, zanim router szkieletowy wywoła określoną funkcję routingu?Wykonaj funkcję przed zmianą trasy w Backbone.js

Chciałbym mieć ogólną funkcję "resetowania" przed renderowaniem każdej strony.

Czy jest jakieś zdarzenie, które mogę powiązać?

Aktualizacja: znalezione rozwiązania polegają na rozszerzeniu routera lub historii w celu wyzwolenia zdarzenia.

+0

Mam rozwiązanie dla tego problemu w tej odpowiedzi: http://stackoverflow.com/a/16298966/2330244 –

Odpowiedz

9

Wygląda jak 1.1.x release szkieletu ma co chcesz metodą Router.execute:

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

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

I”m przy użyciu tego w konstruktorze i to działa dobrze

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

Tutaj ACL jest funkcją

2

jeśli wykonać funkcja jest obecna zostanie wezwany przed każdą zmianą trasy, ale należy zdać argumenty w wywołania zwrotnego aby prawidłowo wykonać inne trasy ogłoszeń.

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

proszę dodać kilka uwag o rozwiązania o tym, dlaczego i jak to rozwiązuje problem –

Powiązane problemy