현재 스코프를 Angular로 전달JS 서비스
는 '현재의'로 하면 요?$scope
JS는요?
하나의 컨트롤러에 의해 소비되는 것을 알고 있는 $서비스가 있는 상황에서 $service 메서드 자체에서 컨트롤러의 범위를 참조하고 싶습니다.
이것이 철학적으로 옳은가요?
아니면 $rootScope로 이벤트를 브로드캐스트한 후 컨트롤러가 이벤트를 수신하도록 하는 것이 좋습니다.
비동기 발생 시 컨트롤러에 통지하려면 Angular 약속을 사용합니다.
을 일으키다$apply
전화하시면 됩니다.$rootScope.$apply
특정 스코프 또는 루트로 호출하는 것은 차이가 없기 때문입니다.
변수 판독치에 대해서는 파라미터를 받는 것이 좋습니다.오브젝트 파라미터로서 스코프에서 읽어낼 수도 있습니다만, 서비스인터페이스를 보다 명확하게 하기 위해서 파라미터로 하겠습니다.
기능이 1개의 컨트롤러에만 한정되어 있는 경우에는 서비스가 필요 없습니다.
컨트롤러 태스크는 특정 모델을 조작하는 것이지만 서비스는 글로벌태스크를 처리해야 합니다.나는 일을 뒤죽박죽으로 만드는 대신 이 패러다임을 고수하고 싶다.
의사는 이렇게 말합니다.
서비스
앵귤러 서비스는 웹 앱에 공통적인 특정 작업을 수행하는 싱글톤입니다.
컨트롤러
Angular에서 컨트롤러는 루트 스코프를 제외한 각도 스코프의 인스턴스를 증강하는 데 사용되는 JavaScript 함수(type/class)입니다.
PS: 다이제스트 할 필요가 있는 경우는, 서비스내에 $rootScope 를 삽입할 수도 있습니다.
네, 초기화 시 $scope를 서비스에 전달할 수 있습니다.서비스 컨스트럭터에서는 스코프를 다음과 같은 것에 할당할 수 있습니다._서비스 내 범위를 검색하여 참조합니다.
angular.module('blah').controller('BlahCtrl', function($scope, BlahService) {
$scope.someVar = 4;
$scope.blahService = new blahService($scope);
});
angular.module('blah').factory('blahService', function() {
//constructor
function blahService(scope) {
this._scope = scope;
this._someFunction()
}
//wherever you'd reference the scope
blahService.prototype._someFunction = function() {
this._scope['someVar'] = 5;
}
return blahService;
});
는 으로 모든 것을 $scope
컨트롤러는 서비스에 따라 달라지고 서비스는 컨트롤러의 범위에 따라 달라지는 순환 참조가 생성되기 때문에 서비스에 대한 생각은 좋지 않습니다.
관계도 혼란스러울 뿐만 아니라, 이런 것은 결국 쓰레기 수집가에게 방해가 된다.
도메인 개체를 컨트롤러 범위에 넣고 이를 서비스에 전달하는 것이 좋습니다.이렇게 하면 컨트롤러 내부에서 사용하든 향후 다른 서비스 내에서 사용하든 상관없이 서비스가 작동합니다.
예를 들어 서비스가 어레이에서 요소를 푸시 및 팝하도록 되어 있는 경우errors
, 코드는 다음과 같습니다.
var errors = [];
$scope.errors = errors;
$scope.myService = new MyService(errors);
이 서비스는 다음에서 동작함으로써 컨트롤러와 상호 작용합니다.errors
물론 어레이 참조 전체를 삭제하지 않도록 주의해야겠지만, 결국 이는 일반적인 JS의 우려 사항입니다.
방송을 하고 싶지는 않지만$apply
그리고/또는 비슷한 것들이 있습니다. 왜냐하면 좋은 OO-프랙티스는 항상 Angular-magics보다 앞서기 때문입니다.
언급URL : https://stackoverflow.com/questions/15509457/passing-current-scope-to-an-angularjs-service
'source' 카테고리의 다른 글
스프링 배치 데이터와 비즈니스 데이터에 대해 별도의 데이터 소스를 Java로 구성하는 방법은 무엇입니까?제가 해야 하나요? (0) | 2023.03.28 |
---|---|
React 문서에서는 componentWillMount가 아닌 componentDidMount에서 AJAX를 실행할 것을 권장하는 이유는 무엇입니까? (0) | 2023.03.28 |
현재 쿼리에 상대적인 범주 수 가져오기 (0) | 2023.03.28 |
왜 Instagram의 페이지 수가 같은 페이지를 반복해서 반환하는 걸까요? (0) | 2023.03.28 |
권한 문제:Wordpress와 함께 사용할 Windows용 도커 권한을 설정하는 방법 (0) | 2023.03.28 |