Ho iniziato a studiare Backbonejs di recente, leggendo un libro. e mi sento un po 'confuso su questo issue.Here è un router:Quale dovrei usare? Backbone.js Router.navigate e window.location.hash
define(['views/index', 'views/login'], function(indexView, loginView) {
var SelinkRouter = Backbone.Router.extend({
currentView: null,
routes: {
'home': 'home',
'login': 'login'
},
changeView: function(view) {
if(null != this.currentView)
this.currentView.undelegateEvents();
this.currentView = view;
this.currentView.render();
},
home: function() {
this.changeView(indexView);
},
login: function() {
this.changeView(loginView);
}
});
return new SelinkRouter();
});
e questo è il metodo di avvio di un'applicazione:
define(['router'], function(router) {
var initialize = function() {
// Require home page from server
$.ajax({
url: '/home', // page url
type: 'GET', // method is get
dataType: 'json', // use json format
success: function() { // success handler
runApplicaton(true);
},
error: function() { // error handler
runApplicaton(false);
}
});
};
var runApplicaton = function(authenticated) {
// Authenticated user move to home page
if(authenticated) window.location.hash='home';
//router.navigate('home', true); -> not work
// Unauthed user move to login page
else window.location.hash='login';
//router.navigate('login', true); -> not work
// Start history
Backbone.history.start();
}
return {
initialize: initialize
};
});
La mia domanda riguarda la parte runApplication
. L'esempio del libro che ho letto ha passato il router nel modulo proprio come questo, ma ha usato window.location.hash = "XXX"
e il router non è stato toccato affatto.
Pensavo che il metodo "navigate" avrebbe fatto spostare il browser sulla pagina specificata, ma non è successo nulla. Perché?
E per l'amor di buona pratica, qual è il modo migliore per ottenere movimento tra le pagine (o le viste)?
grazie per qualsiasi idea.
grazie, akoskm. come hai detto, ho provato a spostare il Backbone.history.start() davanti a router.navigate(), e ha funzionato. quindi devo iniziare la cronologia prima di navigare da qualche parte, giusto? –
@HetfieldJoe È giusto iniziare a monitorare gli eventi di hashchange (navigazione) devi avviare 'Backbone.history', vedere la citazione dalla documentazione sopra. –
forte e chiaro. grazie, amico. –