Voglio creare un modello UserSession, che carica e salva l'ID di sessione in un cookie utilizzando il plugin jQuery.Richiedi js backbone JS global models
Questo è il mio codice per il mio modulo modello UserSession:
define(['jQuery', 'Underscore', 'Backbone'],
function($, _, Backbone){
var UserSession = Backbone.Model.extend({
defaults: {
'accessToken': null,
'userId': null
},
initialize: function(){
this.load();
},
authenticated: function(){
return Boolean(this.get('accessToken'));
},
save: function(authHash){
$.cookie('userId', authHash.id);
$.cookie('accessToken', authHash.accessToken);
},
load: function(){
this.userId = $.cookie('userId');
this.accessToken = $.cookie('accessToken');
}
})
return UserSession;
});
Ma Diciamo che voglio per accedere nel mio vista login:
define(['jQuery', 'Underscore', 'Backbone', 'text!templates/login.html', 'models/UserLogin', 'models/UserSession'],
function($, _, Backbone, loginTemplate, UserLogin, UserSession){
var LoginView = Backbone.View.extend({
model: new UserLogin,
el: $('#screen'),
events: {
'submit #frm-login': 'login'
},
login: function(e){
e.preventDefault(); // Lets not actually submit.
this.model.set({
'username': $('#login-username').val(),
'password': $('#login-password').val()
});
this.model.save(null, {
success: function(nextModel, response){
// Do something here with UserSession model
},
error: function(){
}
});
},
render: function(){
$(this.el).html(_.template(loginTemplate, {}));
return this;
}
});
return new LoginView;
});
La cosa è ogni volta che accedo al UserSession modello nei moduli (si veda la funzione di richiamo del modello success.save) usa i valori predefiniti, quindi ho bisogno di avere qualche tipo di istanza singleton del modello UserSession, come posso fare questo?
La mia prima idea era di usare lo spazio dei nomi dell'app così nel nostro main.js (il primo modulo principale che viene caricato) e lì inizializzare il modulo UserSession, e ogni volta che un altro modulo accede a quel modulo, richiede il modulo principale che ha un oggetto che restituisce l'istanza UserSession.
Come può essere fatto al meglio?
Grazie
La tua prima idea sembra essere la soluzione perfetta. Altrimenti, dovresti memorizzare la sessione utente in localStorage/cookies e cose del genere ... –
come si genera la sessione sul server e ad accedervi? Voglio utilizzare lo stesso approccio, ma ho problemi ad accedere al contenuto dei cookie. Non ho una vista di accesso come questo è reso dal server. – Gambo