지시어를 서로 중첩 시키거나 다른 지시문의 정의 내에서 기존 지시문을 다시 사용하는 것이 좋습니다.지시어 정의에 다른 지시어 안에 지시문을 추가하십시오.
<a class="class1 class2" href="#link1" data-important="data1" my-directive>Test</a>
하면 그것은 중요하지 않습니다 : 지금 사용자 정의 지시어 myDirective
으로이 기존 마크 업에 새로운 기능을 추가 할
<a class="class1 class2" href="#link1" data-important="data1">Test</a>
:
내가이 같은 기존의 HTML 마크 업을 말해봐 무엇myDirective
않습니다,하지만 다시
ngClick
기능을 사용하고 싶습니다. 일반적으로 마크 업은 새 템플릿으로 대체되지만 모든 클래스, 속성 등을 미리 알지 못합니다. 내가 정말로 필요한 것은
에
ngClick
을 붙이는 것이다. 나는 이런 식으로 뭔가를 시도했지만 작동하지 않았다 :
그래서
// inside myDirective
compile: function (element, attrs) {
element.attr('ng-click', 'customFunction()');
}
내가 지금이 방법을 수행
이// inside myDirective
link: function(scope, element, attrs, someCtrl) {
element.bind('click', function() {
someCtrl.customFunction();
scope.$apply();
});
}
이하지만 scope.$apply();
를 호출 할 필요가
- 작동
- 이 방법으로
ngClick
을 에뮬레이트하는 것은 인 이지만 더 복잡한 지시문을 다시 사용할 수는 없습니다.
도움이 필요하십니까?
나는 그것이 기술적으로 내 질문에 대한 정답이라고 생각하여 받아 들인 대답으로 @kamilkp 대답을 표시했습니다. 그러나 당신은 내 사건에 대해 몇 가지 유효한 포인트를 만들었습니다. 그렇다면 대신 무엇을 권하고 싶습니까? 'link '함수를 사용해야할까요? 'ngClick'을 다시 사용하는 경우 : 내 프로젝트에서'ngTouch'를 드롭하면'ngClick'을 향상된 동작으로 바꿉니다. 이것은 단순한'element.bind ('click '')로는 작동하지 않을 것입니다. 아니면 잘못 됐습니까? – Pipo
예, 일부 장치에서는 300ms 지연이 발생하기 때문에 작업하기가 쉽습니다. –