ログインが成功するとコントローラーに作成されるストアがあります。コードは次のようになります。
コントローラーは login.js
//////////// create a JSONstore and load companies into it //////////////
var companies_data = new Ext.data.JsonReader({}, [ 'companyame']);
var storeCompanies = new Ext.data.JsonStore({
storeId: 'storeCompanies',
proxy: new Ext.data.HttpProxy({
type: 'GET',
url: url+'dashboard/?Uid='+uid+'&Ude='+ude,
reader: {
type: 'json',
root: 'root',
totalProperty: 'total'
},
headers: {
'Accept' : 'application/json;application/x-www-form-urlencoded',
'Content-Type' : 'application/x-www-form-urlencoded',
},
params: {
Uid: localStorage.uid,
Ude: localStorage.ude,
},
}),
reader: companies_data,
root: 'd',
type: 'localstorage',
autoLoad : true,
id: 'company_Id',
scope : this,
fields: ['companyname']
});
このコードは、ログインが成功したときに呼び出され、値が渡される関数です。
これはそのままで問題なく動作し、ログインビューでストアを利用できます
メインビューでストアを利用できるようにする必要があります。
私の login.js コントローラーでは、次のようにメインビューを参照しました。
Ext.define('axis3.controller.Login', {
extend: 'Ext.app.Controller',
config: {
refs: {
loginView: loginview,
mainView: 'mainview',
chartView: 'chartview'
},
control: {
loginView: {
signInCommand: 'onSignInCommand'
},
mainMenuView: {
onSignOffCommand: 'onSignOffCommand'
}
}
},
しかし、これは役に立たないようです。
メインビューで次を使用すると
var companyStore = Ext.getStore('storeCompanies'); //
console.log('1-Number : ' + companyStore.getCount()); // Using getCount method.
var anotherCompany = { companyname: 'North Wells'};
companyStore.add(anotherCompany); //
console.log('2-Number : ' + companyStore.getCount()); // Using getCount method.
//////////////
Ext.define('axis3.view.Main', {
extend: 'Ext.form.Panel',
requires: ['Ext.TitleBar','Ext.data.Store'],
alias: 'widget.mainview',......................
次のエラーが表示されます。
TypeError: 'undefined' はオブジェクトではありません ('companyStore.getCount' を評価しています)
別のビューでストアを使用するにはどうすればよいですか?