我有一个要在用户成功登录后加载的 UserStore。我不能让它工作,即找到一个模式来做到这一点。
我现在在 app.js 中有 UserStore,如下所示:
stores : ['UserStore']
店铺
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');
}
}
}
});
根据用户登录前未设置的 php $_SESSION['userid'] 检索用户。
启动应用程序时,商店已加载,但未找到任何数据。我需要回到开头再次登录,然后当然会话ID是在之前的登录中设置的。
我要完成的是延迟加载商店或仅在视图需要时自动加载。
我已经尝试过了,但我无法让它工作。
这就是我所做的:
选项1
我从 app.js 中删除了 UserStore 并向视图添加了一个 require 和 xtype 项目,但随后我得到 [WARN][Ext.dataview.DataView#applyStore] 找不到指定的商店
风景
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>'
})]
}
});
选项 2
尝试找出我是否可以将自动加载设置为 false 并通过某个侦听器按需加载。但我无法确切知道如何。
那么,如何实现这一点以及做到这一点的最佳模式是什么。
谢谢你的帮助!Ext.dataview.DataView#applyStore 找不到指定的Store