AngularJS - 지시 ngClick을 재정의하는 방법
ng-click 명령어를 덮어쓰고 싶습니다.ng-click을 실행할 때마다 $rootscope가 변경됩니다.어떻게 하는 거야?
모든 디렉티브는 AngularJS 내의 특별한 서비스이며 디렉티브를 포함하여 AngularJS 내의 모든 서비스를 재정의하거나 수정할 수 있습니다.
예를 들어 기본 제공 제거ngClick
angular.module('yourmodule',[]).config(function($provide){
$provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
//$delegate is array of all ng-click directive
//in this case first one is angular buildin ng-click
//so we remove it.
$delegate.shift();
return $delegate;
}]);
});
각도에서는 동일한 이름에 대한 여러 지시어를 지원하므로 사용자가 직접 등록할 수 있습니다.ngClick
지시.
angular.module('yourmodule',[]).directive('ngClick',function (){
return {
restrict : 'A',
replace : false,
link : function(scope,el,attrs){
el.bind('click',function(e){
alert('do you feeling lucky');
});
}
}
});
http://plnkr.co/edit/U2nlcA?p=preview를 확인해 주세요.각도가 있는 빌트인을 제거한 샘플을 작성했습니다.ng-click
커스터마이즈한 것을 추가합니다.ngClick
Angular를 재정의할 수 없습니다.JS 기본 제공 지침.그러나 동일한 이름을 가진 여러 디렉티브를 정의하고 동일한 요소에 대해 이들 디렉티브를 실행할 수 있습니다.적절한 할당을 통해priority
지시문에 대한 지시문을 기본 제공 지시문 앞 또는 뒤에 실행할지 제어할 수 있습니다.
이 플런커는 어떻게 조립하는지를 보여줍니다.ng-click
삽입 전에 실행되는 지시어ng-click
코드도 아래에 나와 있습니다.링크를 클릭하면 커스텀이ng-click
먼저 실행한 후 기본 제공ng-click
한다.
index.displaces를 표시합니다.
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="jquery@1.9.0" data-semver="1.9.0" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.js"></script>
<script data-require="angular.js@1.0.7" data-semver="1.0.7" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller="MyCtrl">
<a ng-click="alert()">Click me</a>
</body>
</html>
script.discripts.discripts: 스크립트
angular.module('app', [])
.directive('ngClick', function($rootScope) {
return {
restrict: 'A',
priority: 100, // give it higher priority than built-in ng-click
link: function(scope, element, attr) {
element.bind('click', function() {
// do something with $rootScope here, as your question asks for that
alert('overridden');
})
}
}
})
.controller('MyCtrl', function($scope) {
$scope.alert = function() {
alert('built-in!')
}
})
언급URL : https://stackoverflow.com/questions/18421732/angularjs-how-to-override-directive-ngclick
'programing' 카테고리의 다른 글
Jasmine - 함수 내의 함수 호출을 감시하려면 어떻게 해야 합니다. (0) | 2023.03.20 |
---|---|
jQuery UI 자동 완성 JQuery (0) | 2023.03.20 |
WordPress에서 하위 디렉터리를 관리하는 모범 사례는 무엇입니까? (0) | 2023.03.20 |
HTML 파일 입력에서 '모든 파일' 옵션 제거 (0) | 2023.03.20 |
Angular에서 각 괄호를 사용하는 목적은 무엇입니까? (0) | 2023.03.20 |