現在、実行時にapp.jsにロードしているストアがあります。
stores: ['Neighbors']
そのautoLoadプロパティはtrueに設定されています。
localStorageに情報が見つからない場合に読み込まれるログインシステムを追加しました。
//show login if user credentials are unknown
var username = window.localStorage.getItem("email");
var user_id = window.localStorage.getItem("user_id");
if(username == '' || username == undefined || user_id == '' || user_id == undefined) {
Ext.Viewport.add(Ext.create('aa.view.Login'));
} else {
Ext.Viewport.add(Ext.create('aa.view.Main'));
}
ログインビューは、ユーザーをログインさせるためのajaxリクエストを起動し、成功するとユーザーのIDとその他の情報が返されます。
onLoginButtonTap: function() {
var values = this.getLoginForm().getValues();
var that = this;
// do the ajax login
Ext.Ajax.request({
url: 'http://localhost:8000/session',
method: 'POST',
params: values,
timeout: 10000, // time out for your request
success: function(result) {
// let's get the email and id into local storage
var json = Ext.decode(result.responseText);
console.log(json);
window.localStorage.setItem('user_id', json.user_id);
window.localStorage.setItem('email', json.email);
// var neighborsStore = Ext.getStore('Neighbors');
// neighborsStore.load();
// load up the tab holder and destroy the login view
Ext.getCmp('loginForm').destroy();
Ext.Viewport.add(Ext.create('aa.view.Main'));
},
failure: function(){
Ext.Msg.alert("Login Failed");
}
});
}
ストアでuser_idを使用して、近くにいる他のユーザーのリストを取得します。唯一の問題は、ユーザーがログインしない限り、user_idがわからないことです。
ストアを更新するか、ログインが成功するまでロードを延期する必要があります。私はむしろ2番目のオプションを実行し、ログイン後にのみストアのロードを試みます。
これを行う方法についての情報が見つからないようです。私はもう試した
Ext.getStore('storename').load()
しかし、それは店をリフレッシュしていません。autoLoadをfalseに設定しようとしましたが、ストアが読み込まれません。読み込みを延期するにはどうすればよいですか?