2016-09-28 2 views
0

내가 발견 한 모든 대답은 요소를 사용하고 거기에서 $scope에 액세스하는 것과 관련되어 있습니다.

콘트롤러 정의 외부의 자바 스크립트에서 콘트롤러 이름으로 콘트롤러의 스코프에 접근하고 싶습니다. 이것은 가능한가? 명확성을 위해


, 나는 컨트롤러 내에서 $scope에 감시 당하고 변수를 업데이트하기 위해 노력하고있어. 내 응용 프로그램에서 여러 컨트롤러에 대해이 기능을 수행 할 수있는 매개 변수를 전달할 수있는 독립 실행 형 함수를 하나 갖고 싶습니다.

내가 완전히 잘못된 방향으로 가고있는 경우 나를 바로 잡으십시오. 최근에 각도에 빠지기 시작했습니다.


뭔가 같은 :

var myapp = angular.module("myapp", []); 

myapp.controller("myController1", function($scope, $http){ 
    $scope.specialVar = "some value"; 
}); 
myapp.controller("myController2", function($scope, $http){ 
    $scope.specialVar = "some other value"; 
}); 

var myFunction = function(controller, val){ 
    //set the value of specialVar for the passed controller to the passed value 
    myapp.AccessController(controller).$scope('specialVar', val); 
} 
+2

서비스를 사용하여 데이터를 공유하고 저장하고 바인딩합니다. 당신이 무엇을하려고하는지 ... 또는 당신이 해결하려고하는 더 높은 레벨의 문제를 100 % 명확히하지 말 것. – charlietfl

+0

@charlietfl이 예제를 –

+0

에 추가 했으므로 그 기능을 어디에서 사용하려고 했습니까? 앱 안에 있습니까? 그렇다면 당신은 분명히 서비스를 사용할 것입니다. – charlietfl

답변

3

하면 응용 프로그램에서 특정 컨트롤러 공존의 인스턴스의 수를 가지고 있지만, 하나 개의 서비스 만 할 수있는 기억; 서비스는 효과적으로 싱글 톤입니다. 주어진 컨트롤러의 인스턴스가 정확히 하나만 있다고 가정 할 수 있다면 컨트롤러를 서비스로 취급하고있는 것처럼 들리므로 대신 서비스를 사용해야합니다. 이 아니라면 정확히 하나의 인스턴스 만 있다고 가정 할 수있는이 아니라면 angular.element(domElement).scope()을 통해 절대적으로 액세스해야합니다. 그렇지 않으면 많은 인스턴스 중 어떤 인스턴스를 선택해야하는지 알 수 없으므로 절대적으로 액세스해야합니다.

범위를 검색하는 데 요소를 사용하지 않으려는 경우 언제든지 서비스와 사전/개체를 사용하여 임의의 키에서 지정된 범위로 매핑 할 수 있습니다.

+0

감사! 이것은 초보자에게 좋은 정보입니다. –

관련 문제