2016-09-28 4 views
0

길고 복잡한 인증 체인을 통해 사용자를 기록하는 Microsoft의 adal.js for angular을 사용하고 있습니다. 로그인 프로세스가 완료되면 adal은 사용자 정보를보기에 사용할 수있게하기 때문에 밀접한 관계가 있습니다. :각도 변수는보기에서만 사용할 수 있으며 컨트롤러에서는 사용할 수 없습니다.

<p> 
    {{userInfo.userName}} 
</p> 

그건 작동하지만 어떻게 작동하는지 모르겠습니다.

나는 구문을 사용하고 있으므로 컨트롤러에 $scope을 사용하려면 특별히 삽입해야합니다. 그렇지 않으면 컨트롤러에 사용할 수 없습니다.

그리고 $scope은 컨트롤러에 주입되지 않습니다.

컨트롤러에 $scope이 삽입되지 않은 경우 뷰에서 어떻게 $scope 변수를 보유하게 되었습니까?

감사합니다.

EDITED FOR CLARITY. 나는 그 질문이 더 이해되기를 바란다.

+0

'$ scope'가 컨트롤러에 채워지고 뷰에 표시됩니다. 컨트롤러에 데이터를 입력하기 위해'ng-model' 지시어를 사용해야합니다. EDIT : 링크를 제거했습니다. – Baruch

+0

혼란 스럽습니다. 컨트롤러에는 항상 범위가 만들어집니다. 컨트롤러가 사용할지 여부는 중요하지 않습니다. 모든 각도 표현식은 항상 범위에서 평가됩니다. controllerAs를 사용하면 컨트롤러 자체가 선택한 이름으로 스코프에 저장됩니다. –

+0

혼란 스러울 지 모르지만 컨트롤러에'$ scope '를 특별히 주입하면'$ scope.userInfo' 만 얻을 수 있습니다. 그렇지 않으면'$ scope is not defined '입니다. – crowhill

답변

0

adal.js 라이브러리가 rootScope에서 userInfo 객체를 관리하는 것처럼 보입니다. 안타깝게도 컨트롤러에 액세스하려면 스코프 ($ scope 또는 $ rootScope)를 컨트롤러에 삽입해야 액세스 할 수 있습니다.

뷰는 항상 범위의 개체에만 액세스 할 수 있습니다. 뷰에 무언가에 대한 액세스 권한이 있으려면 뷰의 범위에 첨부되어야합니다. 각도 개발자가 {{ $scope.userInfo.userName }} 대신에 {{ userInfo.userName }} 대신 $ scope를 사용하면 $ scope가 중복됨을 알 수 있습니다.

컨트롤러에 스코프를 삽입하지 않으려면 다음을 수행 할 수있는 팩터 리를 만들 수 있습니다. $ rootScope를 주입하고 필요한 것을 액세스하기위한 메소드를 제공합니다.

+0

답변을 주셔서 감사합니다. – crowhill

+0

"뷰는 항상 스코프의 개체에만 액세스 할 수 있습니다." 자세한 내용은이 설명서에 대한 링크가 있습니까? – crowhill

+0

그건 잠깐 Angular에서 프로그래밍으로 배웠습니다. 어떤 공식 문서를 찾을 수 있는지 알아 보겠습니다. –

관련 문제