jQuerycookieプラグインを使用してセッションIDをcookieにロードおよび保存するUserSessionモデルを作成したいと思います。
これは私の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;
});
しかし、ログインビューにアクセスしたいとしましょう。
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;
});
モジュールでUserSessionモデルにアクセスするたびに(model.save successコールバック関数を参照)、デフォルト値が使用されるため、UserSessionモデルのある種のシングルトンインスタンスが必要です。これを行うにはどうすればよいですか?
私の最初のアイデアは、アプリの名前空間を使用することでした。そのため、main.js(ロードされる最初のメインモジュール)でUserSessionモジュールを初期化し、別のモジュールがそのモジュールにアクセスするたびに、 UserSessionインスタンス。
どうすればこれを最もうまく行うことができますか?
ありがとう