2013-08-14 3 views
0

로그인이 성공하면 컨트롤러에 만들어지는 저장소가 있습니다. 코드는 다음과 같습니다Sencha : 다른보기에서 저장소 사용

컨트롤러는 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'] 
     }); 

코드는 로그인에 성공하고 값에 호출되는 함수는, 그것을 전달된다.

이 그대로을 위해 잘 작동하고 상점 내 MAINVIEW에 사용할 수 있도록 저장소를 필요로하는 로그인보기

사용할 수 있습니다.

Ext.define('axis3.controller.Login', { 
extend: 'Ext.app.Controller', 
config: { 
    refs: { 
     loginView: loginview, 
     mainView: 'mainview', 
     chartView: 'chartview' 
    }, 
    control: { 
     loginView: { 
      signInCommand: 'onSignInCommand' 
     }, 
     mainMenuView: { 
      onSignOffCommand: 'onSignOffCommand' 
     } 
    } 
}, 

을하지만이 도움하지 않는 것 : 내 login.js 컨트롤러에서

, 나는이 같은 MAINVIEW 언급했다.

TypeError: 'undefined' is not an object (evaluating 'companyStore.getCount')

이 어떻게 다른보기에 내 가게를 사용할 수 있습니다 : 내 MAINVIEW

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',...................... 

에 다음을 사용하는 경우

나는이 오류가?

답변

0

다시 시도 지금이

var storeCompanies = Ext.create("Ext.data.JsonStore",{ 
      storeId: 'storeCompanies', // add this line 
      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'] 
     }); 

처럼하려고합니다. 뷰가 존재하기 전에 저장소를 사용하려고합니다. 스토어는 사용자가 로그인 할 때만 생성됩니다.

내가 사용하기로 결정한 솔루션은 빈 저장소를 만든 다음 성공적인 로그인시 데이터를 추가하는 것입니다.

var anotherCompany = {companyname: 'Keep Groom'}; 
companiesStore2.add(anotherCompany); // Use the add function to add records or model instances. 

이 제안에 대한

0

것은 storeId 보내기 문제를 알아 낸 경우 Ext.getStore('storeCompanies');

+0

감사를 작동하는 것 같다. storeID를 추가하고 Ext.getStore ('storeCompanies')를 사용했습니다. 뷰에서 저장소를 사용해야하지만 여전히 동일한 오류가 발생합니다. 더보기 코드를 표시하기 위해 질문을 편집했습니다. –

+0

@JezD storeID 또는 StoreId를 추가 했습니까? – Viswa

+0

storeId : 'storeCompanies': 정확히 제안대로 –