2014-07-07 5 views
2

일부 응용 프로그램 상태 정보는 전역 액세스 할 수 있도록 Angular 서비스에 저장해야합니다. AngularJS에서 전역 변수를 업데이트하는 방법은 무엇입니까?

app.value('identity', {}); 

그런 다음 로그인 한 후 처음보기의 컨트롤러. 나는 서버 측에서 응용 프로그램 상태 정보를 수집하는 GET API 호출을합니다. 성공 콜백에서 데이터를 전역 변수 (서비스)로 전송하십시오.
function successCallback(data) { 
    identity.username = data.username; 
    identity.email = data.email; 
} 

은 내가 identity 내 응용 프로그램을 통해 데이터를 개최한다 가정. 그러나 그것은 사실이 아닙니다! 내 다른 뷰에서 나는 컨트롤러

app.controller('anotherController', ['identity', anotherController]; 
function anotherController(identity){ 
    // access identity here. 
    $scope.username=identity.username; 
} 

에 내가 그보기에 와서 처음 identity을 주입. username이 페이지에 올바르게 표시됩니다. 그러나 새로 고침 후 identity이 다시 null로 표시됩니다. 가치를 정말 끈기있게 만들기 위해 우리는 무엇을 할 수 있습니까?

+0

"후

funciton successCallback(data) { // here, not overwriting identity, but editing a property identity.data = data; } 

컨트롤러 ...

app.value('identity', { data: null }); 

: 나는 정체성 속성에 콜백의 응답을 지정할 것 새로 고침 "F5 스타일로 새로 고침을 의미합니까? –

+0

예. F5 이후. – Blaise

+1

서비스는 각진 앱에서 싱글 톤이지만 전체 앱이 F5 키로 다시 시작됩니다. 'localStorage'로 상태 클라이언트 측을 유지할 수 있습니다. –

답변

2

각도가 모르는 새 개체에 var 신원을 가리키고 있으므로 새 값을 다른 컨트롤러로 가져올 수 없습니다.

app.controller('anotherController', ['identity', anotherController]; 
    function anotherController($scope, identity){ 

    // add the svc to the scope so you can access its properties later 
    $scope.identity = identity; 
} 

HTML 템플릿 :

{{ identity.data | json }} 
+0

답장을 보내 주셔서 감사합니다. 그것을 올바른 답으로 표시 한 후 다른 문제를 발견했습니다. 질문을 조금 업데이트했습니다. – Blaise

관련 문제