2013-11-25 3 views
0

Angularjs를 처음 사용합니다. 나는 개인 웹 사이트에서 일하고 있으며 각도를 사용하고 있습니다. 사람들이 로그인 할 수 있기를 바랍니다. 로그인 한 후에는 항상 valueervice에 사용자 이름을 저장하여 항상 사용할 수있게하려고합니다. 내가 할 수 있을까?Angularjs, 런타임시 값 서비스의 값 설정

config() 함수에서 시도했지만 성공하지 못했습니다. 구성 기능을 사용하는 이유는 사용자가 이미 로그인했는지 확인하기 때문입니다.

감사합니다.

+0

어떻게 로그인 기능을합니까? 쿠키를 백엔드로 설정했기 때문에 서비스를 통해 사용자 데이터를 읽고 나머지 앱에 공개하고 싶습니까? 여기서 핵심적인 문제는 사용자가 앱을 읽을 수 없거나 앱의 나머지 부분과 제대로 공유 할 수 없다는 것입니다. –

+0

firebase API를 사용하고 있습니다. 나는 그들이 통합되어 있지만 내 firebase 서비스를 만들려고 노력하고있다 – chandings

+0

핵심 문제는 런타임에 설정할 수있는 일부 전역 변수를 유지하고 변경할 수 있습니다. 로그인 이메일 ID는 그들 중 하나입니다 – chandings

답변

1

Angular에서 전역 적으로 사용할 수있는 데이터를 저장하는 두 가지 기본 방법이 있습니다.

첫 번째 것은 $ rootScope에 저장하는 것입니다. rootScope는 이름에서 알 수 있듯이 다른 모든 범위의 루트이므로 모든 템플릿에서 항상 사용할 수 있으며 모든 컨트롤러/서비스/etc에 삽입 할 수 있습니다. 두 번째 방법은 서비스 점유율이 지속 된 데이터를 사용하는 것입니다

app.service('LoginService', ['$rootScope', function($rootScope) { 
    var user = {}; //Get the user somehow 
    $rootScope.user = user; 
} 

: 단지 일반 $ 범위와 같이 사용되므로 로그인 서비스는 같은 일을 할 것입니다. 자세한 내용은 the answer here을 참조하십시오.


이 경우 처음에는 $ rootScope를 사용하십시오. 전역 적으로 사용할 수있는 무언가가 있다면 rootscope은 완벽하게 적합합니다. 앱의 일부분에서만 공유해야하는 것이 있으면 서비스를 사용하십시오.

로그인 서비스를 호출하기에 좋은 곳은 app.run() 메소드입니다. 앱이 시작될 때 제일 먼저 실행됩니다 (config를 사용한 후 제외).

0

당신은 모듈 설정 기능에서 서비스 값을 설정할 수 있지만 모듈 실행 블록에서 그것을 할 수 각도 공식 문서에서
:

  1. 구성 블록 - 공급자 등록시 실행 얻을하고 구성 단계. 구성 블록에만 제공자 및 상수를 주입 할 수 있습니다. 이것은 완전히 구성되기 전에 실수로 서비스가 인스턴스화되는 것을 방지하기위한 것입니다.
  2. 실행 블록 - 인젝터가 생성 된 후 실행되고 응용 프로그램을 킥 스타트하는 데 사용됩니다. 인스턴스 및 상수 만 실행 블록에 주입 할 수 있습니다. 응용 프로그램 실행 중 시스템을 더 이상 구성하지 못하도록합니다.

관련 링크 : http://docs.angularjs.org/guide/module