tutorial significado redes meaning backbonejs backbone backbone.js routing backbone-routing

backbone.js - redes - backbone significado



Agregando rutas programáticamente a Backbone.Router? (1)

Aquí está mi archivo application-router.js donde estoy creando un objeto Backbone.Router con solo unas pocas rutas:

var App = App || {}; App.Router = Backbone.Router.extend({ routes : { '''' : ''showDashboard'', // Not shown ''*other'': ''showModalError'' }, defaultRoute : function(other) { $(''#modal404'').modal(); } });

En el archivo javascript principal application.js me gustaría agregar rutas mediante programación. He intentado con la función route () y no funciona, las rutas no se agregan. Sin embargo, funciona pasando un objeto al "constructor", pero eso anulará las rutas ya definidas:

// This works and overrides all defined routes in App.Router var router = new App.Router({ routes : { ''/test/me'' : ''testRoute'' } }); // This is not working router.route(ExposeTranslation.get(''customers.new.route''), ''newCustomer''); router.route(''/test/me/again'', ''testAgainRoute'');

De hecho, console.log(App.Router) muestra:

routes Object { /test/me="testRoute"}

Supongo que me estoy perdiendo algo que no puedo entender, estoy empezando a aprender esta pequeña pieza de javascript poderoso.


Sus llamadas router.route están funcionando, esas llamadas no son su problema. Cuando llama a la route para agregar una nueva ruta, la nueva ruta se ubica al final de la lista de rutas. En particular, las rutas que son agregadas por las llamadas a su route van después de ''*other'' y ''*other'' coincidirán con cualquier cosa para que sus nuevas rutas sean ignoradas efectivamente.

Intente eliminar su ruta ''*other'' de las routes y agregarla después de sus dos llamadas a la route() :

routes : { '''' : ''showDashboard'' // Not shown }, router.route(ExposeTranslation.get(''customers.new.route''), ''newCustomer''); router.route(''/test/me/again'', ''testAgainRoute''); router.route(''*other'', ''showModalError'');

Las rutas no se almacenan en el objeto App.Router , se almacenan dentro de Backbone.history :

route: function(route, name, callback) { // ... Backbone.history.route(route, _.bind(function(fragment) { //... }, this)); return this; },

Es por eso que console.log(App.Router) no dice nada útil.