Angular의 .$on()이란JS
나는 이 코드를 얻었다.$rootScope.$on('abc',function(event, next, current){ });
튜토리얼에서.
내 질문은 무엇이냐는 것이다..$on()
함수인 경우 앞에 왜 이 함수가 붙습니까?$
?
$on
관련되다$broadcast
그리고.$emit
- 다른 곳에서 코드를 트리거하는 방법입니다.
의 첫 번째 점$on
알아둬야 할 것은, 이 방법은$scope
두 번째로 알아야 할 것은 $ prefix는 Angular 메서드를 나타내고 $ prefix는 사용을 피해야 하는 Angular 메서드를 나타냅니다.
자, 이제 세부 사항으로 넘어가겠습니다.$on
이에요.
다음은 템플릿과 그 컨트롤러의 예시입니다.이 예에서는,$broadcast/$on
우리가 원하는 것을 성취할 수 있도록 도와줄 수 있다.
<div ng-controller="FirstCtrl">
<input ng-model="name"/>
<button ng-click="register()">Register </button>
</div>
<div ng-controller="SecondCtrl">
Registered Name: <input ng-model="name"/>
</div>
컨트롤러는
app.controller('FirstCtrl', function($scope){
$scope.register = function(){
}
});
app.controller('SecondCtrl', function($scope){
});
궁금한 점은 사용자가 register를 클릭했을 때 두 번째 컨트롤러에 이름을 전달하려면 어떻게 해야 합니까?여러 가지 솔루션을 제안할 수도 있지만, 저희가 사용하는 솔루션은 $broadcast와 $on을 사용하는 것입니다.
193달러 vs 195달러
어떤 걸로 할까요?$dom은 모든 자식 돔 요소에 채널 다운되고 $dom은 모든 조상 돔 요소에 반대 방향으로 채널 다운됩니다.
$emit과 $broadcast 중 하나를 선택하지 않는 가장 좋은 방법은 $rootScope에서 채널을 돌려 $broadcast를 모든 자녀에게 사용하는 것입니다.우리 돔 요소들이 형제자매이기 때문에 우리 사건이 훨씬 수월해 졌지.
$rootScope 및 $broadcast 추가
app.controller('FirstCtrl', function($rootScope, $scope){
$scope.register = function(){
$rootScope.$broadcast('BOOM!', $scope.name)
}
});
$rootScope를 추가하여 $broadcast(broadcastName, 인수)를 사용하고 있습니다.broadcastName의 경우 고유한 이름을 지정하여 두 번째 Ctrl에서 해당 이름을 사용할 수 있도록 합니다.BOOM! 그냥 재미로 골랐어요.두 번째 인수 'arguments'는 청취자에게 값을 전달할 수 있도록 합니다.
저희 방송 수신
두 번째 컨트롤러에서는 방송을 듣기 위한 코드를 설정해야 합니다.
app.controller('SecondCtrl', function($scope){
$scope.$on('BOOM!', function(events, args){
console.log(args);
$scope.name = args; //now we've registered!
})
});
그건 정말 간단해.라이브 예시
유사한 결과를 얻기 위한 기타 방법
이 방법은 효과적이지도 않고 유지보수가 용이하지도 않지만 문제를 해결하는 간단한 방법이므로 사용하지 않도록 하십시오.
일반적으로 서비스를 사용하거나 컨트롤러를 단순화하는 방법으로 동일한 작업을 수행할 수 있습니다.자세한 내용은 설명하지 않겠습니다만, 조금 더 자세히 말씀드리려고 합니다.
마지막으로 정말 유용한 브로드캐스트는 '$destroy'입니다.$는 벤더 코드에 의해 작성된 메서드 또는 오브젝트임을 알 수 있습니다.어쨌든 컨트롤러가 파괴되면 $destroy가 브로드캐스트되므로 컨트롤러가 언제 분리되었는지 이 내용을 들어보면 알 수 있습니다.
앞의 답변은 매우 좋은 답변입니다.한마디 덧붙이고 싶습니다.이 $on 종류의 청취자는 매우 중요한 속성을 가지고 있습니다.취소(정지)할 수 있습니다.무슨 뜻인지 설명하겠습니다.
html:
<div ng-controller="FirstCtrl">
<input ng-model="name"/>
<button ng-click="register()">Register </button>
</div>
<div ng-controller="SecondCtrl">
Registered Name: <input ng-model="name"/>
</div>
<hr/><br/>
<button ng-click="disableEvents()">Disable events</button>
컨트롤러:
app.controller('SecondCtrl', function($scope){
$scope.cancelOn = $scope.$on('BOOM!', function(events, args){
console.log(args);
$scope.name = args; //now we've registered!
});
// this will cancel the event listening....
$scope.disableEvents = function(){
console.log('Canceling the event listener: ', $scope.cancelOn());
}
});
Register(등록) 버튼을 누르면 두 번째 컨트롤러와 통신하는 것을 볼 수 있습니다.이제 "이벤트 비활성화" 버튼을 누릅니다.그러면 청취자인 $on(...)이 취소됩니다.「등록」을 다시 누르면, 청취자가 이러한 종류의 이벤트를 수신하지 않게 됩니다.
언급URL : https://stackoverflow.com/questions/28800426/what-is-on-in-angularjs
'programing' 카테고리의 다른 글
Sonar 탐지 보고서에서 롬복 클래스 제외 (0) | 2023.03.27 |
---|---|
Spring Boot에서는 org.hibernate는 처리되지 않습니다.예외.제약 위반예외. (0) | 2023.03.27 |
Spring Boot에서 파일 업로드를 위한 임시 디렉토리를 지정하는 방법은 무엇입니까? (0) | 2023.03.22 |
최소화 없이 React의 실제 버전을 구축하는 방법은 무엇입니까? (0) | 2023.03.22 |
초기 상태를 redux로 설정하는 방법 (0) | 2023.03.22 |