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.