2012-03-27 2 views
2

나는이 질문이 이미 StackOverflow에 게시되었음을 알고 있지만 이해가 안되었거나 다소 변경되었습니다.Sencha Touch 2 전역 변수 - 액세스 사방

내 앱이 로그인 용 양식 패널을로드 한 다음 방금 로그온 한 사용자 정보를 저장하려고합니다. 이렇게하면 언제든지 로그인 한 사용자의 이름을 알 수 있으며 언제든지 내보기를 변경할 수 있습니다.

여기 내 주요 코드 :

//<debug> 
Ext.Loader.setPath({ 
    'Ext': 'sdk/src' 
}); 

//</debug> 
Ext.application({ 
    name: 'APP', 

    loadedUser: 'the test', 

    requires: ['Ext.MessageBox'], 

    views: ['Main', 'Home', 'Login'], 

    models: ['User'], 

    stores: ['Users'], 

    controllers: ['Main'], 

    icon: { 
     57: 'resources/icons/Icon.png', 
     72: 'resources/icons/Icon~ipad.png', 
     114: 'resources/icons/[email protected]', 
     144: 'resources/icons/[email protected]' 
    }, 

    phoneStartupScreen: 'resources/loading/Homescreen.jpg', 
    tabletStartupScreen: 'resources/loading/Homescreen~ipad.jpg', 

    setLoadedUser: function(arg) { 
     this.loadedUser = arg; 
    }, 

    launch: function() { 
     // Destroy the #appLoadingIndicator element 
     Ext.fly('appLoadingIndicator').destroy(); 

     // Initialize the main view 
     Ext.Viewport.add(Ext.create('APP.view.Main')); 
    }, 

    onUpdated: function() { 
     Ext.Msg.confirm("Application Update", "This application has just successfully been updated to the latest version. Reload now?", function() { 
      window.location.reload(); 
     }); 
    } 
}); 

'loadedUser'의 I는 그 값을 변경 suposed 내 전역 변수와 메소드 setLoadedUser (ARG)로 원하는 것을.

'loadedUser'에 액세스 할 수 있지만 아무런 문제가 없지만 값을 변경할 수는 없습니다. 또 다른 질문 : loadedUser는 배열/데이터 구조 일 수 있습니까?

+1

어떻게 함수에 액세스합니까? 이것은 나를 위해 작동합니다. 'APP.app.setLoadedUser ('test');'와 같이 접근해야한다는 것을 기억하십시오. 그리고 네, 어떤 가치가있을 수 있습니다. :) – rdougan

+0

그것은 그 것이었다. 답으로 제출하여 답변을 드릴 수 있습니다 :) 감사합니다. – Ricardo

답변

4

어떻게 기능에 액세스합니까? 이것은 나를 위해 작동합니다. 다음과 같이 액세스해야 함을 기억하십시오.

APP.app.setLoadedUser('test'); 

예, 모든 값이 가능합니다. :)

+0

상점과 컨트롤러에서이 항목에 액세스 할 수 없습니다. 왜 그렇습니까? – kush

0

예, 기능은 app.js 파일 내부에있을 때 작동합니다. 함수가 컨트롤러 파일 안에있는 경우 작동하지 않습니다.

당신의 모습 당신의 app.js 파일 철인라는 프로젝트 응용 프로그램, 글로벌 기능, flyAway()에보기 코드에서 호출, 그래서 경우 :

IronMan.app.flyAway(); 
+0

ironman fan haha;) – kush

+0

솔직히이 답변을 얻지 못했습니다. 위와 같이 my app.js에는 app.js 파일의 'Ext.application' 루트 수준에서 전역으로 사용할 함수가 포함되어 있습니다. 내가 빠진 것이 있습니까? – vaitrafra

+0

방금 ​​getLoggedUserDetails()를 호출해야하는 범위에서'launch()'를 호출하려했으나 제대로 작동합니다. 나는 실제로 WTF를 인식하지 못하는 내 사용자 정의 함수를 얻지 못한다. – vaitrafra

1

을 당신은 또한 로컬 스토리지에 대한 설정을 사용할 수 있습니다/당신의 변수를 얻을 :
설정을 그것과 같은 : localStorage.getItem('currentUserId')
: localStorage.setItem('currentUserId', userID)
로 받기스크립트의 어느 위치에서나 사용할 수 있습니다.