ユーザーのログインに成功した後にロードしたい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指定されたストアが見つかりません