目前我有一个商店,我在运行时在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不可知。
我需要刷新商店,或者我需要推迟加载,直到成功登录。我宁愿做第二个选项,只是在登录后尝试加载商店。
我似乎无法找到有关如何执行此操作的任何信息。我试过了
Ext.getStore('storename').load()
但它并没有让商店更新。我已经尝试将autoLoad设置为false但是商店从未加载。我如何推迟加载?
答案 0 :(得分:1)
您应该可以在成功功能中使用that.getNeighborsStore().load()
。这将在用户成功登录后加载商店。