I have a UserStore that I want to load after succesful login of a user. I can't get this to work i.e. find a pattern to do this.

I now have the UserStore in the app.js like this:

stores : ['UserStore']

The store

Ext.define('MyApp.store.UserStore', {
extend : 'Ext.data.Store',
xtype : 'userstore',
config : {
model : 'MyApp.model.User',
autoLoad : true,
proxy : {
type : 'ajax',
url : 'php/get_user.php',
reader : {
type : 'json',
rootProperty : 'users'
}
},
listeners : {
beforeload : function() {
console.log('Before load');
},
load : function(store) {
console.log('load');
}
}
}
});

The user is retrieved based on the php $_SESSION['userid'] which is not set before a user is loggedin.

When starting up the app the store is loaded but it doesn't find any data. I need to go back to the beginning to log in again and then of course the session id was set in the previous login.

What I am trying to accomplish is either to lazy load the store or to autoload only when needed by the View.

I have tried this but I can't get it to work.

This is what I did:

option 1

I removed the UserStore from app.js and added a require and xtype item to the View but then I get [WARN][Ext.dataview.DataView#applyStore] The specified Store cannot be found

The View

Ext.define('MyApp.view.Profile', {
extend : 'Ext.Panel',
xtype : 'profileview', requires : ['MyApp.store.UserStore', 'Ext.List', 'Ext.DataView', 'Ext.data.Store'], config : {
layout : 'fit',
title : 'Profiel',
iconCls : 'user3',
cls : 'home',
scrollable : true,
styleHtmlContent : true,
html : ['<h1>Mijn Profiel</h1>'].join(""),
items : [Ext.create('Ext.DataView', {
store : 'userstore',
itemTpl : '<h2>{USERNAME}</h2><p>{EMAIL}</p>'
})]
}
});

Option 2

try to find out if I can set the autoload to false and load in on demand via some listener. But I can't find out exactly how.

So, how can this be achieved and what is the best pattern to do this.

Thanks for your help! Ext.dataview.DataView#applyStore The specified Store cannot be found

 

1 Answer

up vote3 down vote accepted

I actually never assign stores this way: store : 'userstore'. A better way is to create an instance of the store and load it yourself, using the autoLoad: false on my stores, I don't like them loading at start of the app. Try this (I can't test it because I'm not usually programming touch apps).

Ext.define('MyApp.view.Profile', {
extend: 'Ext.Panel',
xtype: 'profileview', requires: ['MyApp.store.UserStore', 'Ext.List', 'Ext.DataView', 'Ext.data.Store'], config: {
layout: 'fit',
title: 'Profiel',
iconCls: 'user3',
cls: 'home',
scrollable: true,
styleHtmlContent: true,
html: ['<h1>Mijn Profiel</h1>'].join("")
}, initialize: function () {
var me = this; //Create the instance of the store and load it
var userStore = Ext.create('MyApp.store.UserStore');
userStore.load(); //Create the dataview
var view = Ext.create('Ext.DataView', {
store: userStore,
itemTpl: '<h2>{USERNAME}</h2><p>{EMAIL}</p>'
});
//Add the dataview to the panel
me.add(view);
}
});




关注公众号,分享干货,讨论技术


最新文章

  1. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法
  2. Oracle Linux(64位)安装64位Oracle10g遇到ins_ctx.mk问题
  3. MongoDB 3.X 用户权限控制
  4. KMS服务器激活Windows和Office2013EnterprisePlus
  5. HTML5+学习笔记2-------边看代码边研究貌似还是有点问题...还在研究中api中
  6. Implement strStr() [LeetCode]
  7. 虚拟化_KVM
  8. WPF 数据绑定
  9. rpm 与压缩解压缩
  10. 【原创】MapReduce计数器
  11. cf Strings of Power
  12. .NET基础拾遗(4)委托和事件2
  13. CSS绘制无图片的气泡对话框
  14. 通信录列表+复杂Adapter分析
  15. LVM 移除PV步骤
  16. 【运维】在Windows上使用IIS方向代理配置Websocket
  17. μC/OS-II 创建一个任务的流程
  18. JAVA中的责任链模式(CH01)
  19. Kettle安装Kafka Consumer和Kafka Producer插件
  20. 2018 pycharm最近激活码

热门文章

  1. javac、jar使用实录
  2. 【java并发编程实战】第六章:线程池
  3. 对TPR(真正例率) 与 FPR(反正例率)的理解
  4. UVA 11880 Ball in a Rectangle(数学+平面几何)
  5. linux进程同步之信号量
  6. MapReduce 并行编程理论基础
  7. 漫谈单点登录(SSO)
  8. nginx安装-del
  9. 【SSH】——Hibernate三种状态之间的转化
  10. QT启动一个工程