2013-12-14 4 views
4

내게 근본적인 질문에 대한 답을 찾기 위해 많은 조사를했지만 놀랍게도 성공하지 못했습니다. 공식 문서는 대답도없이 나를 떠났다. 간단한 질문은 지시어의 링크 함수 내에서 형제 요소에 액세스하는 방법입니다.Angularjs 지시문 : 링크 함수에서 형제 요소에 액세스

나는 ng-repeat가있는보기가 있습니다. 내 지시어는 각각의 반복 반복 요소에 대한 클릭을 바인딩합니다.

link: function (scope, element) { 
    element.bind('click', function() { 
     // how to access element.siblings here ? 
... 

고맙습니다.

+1

'element.siblings()'을 사용해 보셨나요? 지시문 – Satpal

+0

의 완전한 코드를 게시하면 왜 'ng-click'을 사용하지 않습니까? 더 많은 코드를 보여주십시오. 목표는 무엇입니까? – charlietfl

+0

@Satpal 실제로'angular.element'에 사용 된'jQlite'는 jQuery가로드되지 않으면'형제 '메소드가 없습니다. – charlietfl

답변

5

jQuery로 작업하는 경우 .siblings() 함수를 사용할 수 있습니다. angular.element 만있는 경우 .next() 기능을 사용하여 다음 형제에게 액세스 할 수 있습니다.

그러나 angularjs를 사용하고 있으므로 DOM 요소 인 "jQuery"에 액세스하는 대신 이러한 종류의 상호 작용을 위해 모델을 사용하는 것이 좋습니다. 자신이하려는 일에 대해 더 자세하게 설명하면 누군가가 (디자인 관점에서) 더 나은 방법을 제안하여 목표를 달성 할 수 있습니다.

+0

jQuery를 포함하고 싶지 않습니다. .next() 함수는 내 문제에 대해서는 그다지 우아하지 않습니다. 내 진짜 문제에 대한 링크가있는 위의 내 의견을 참조하십시오. 고맙습니다. – peaceLion

+0

네, 다른 질문에 답했습니다. 이 경우에는 형제 요소의 클래스를 변경하지 않아야합니다. angular.element가 형제에 대한 액세스를 지원하지 않는 이유가 있습니다. – lex82

+0

지시문에서 모델 사용에 동의합니다 ($ scope의 변수 + 함수). 각도 바인딩, {{}}을 통한 보간 및 ngClick, ngIf 및 ngClass와 같은 기타 지시문을 포함하여 지시문의 컨트롤러와 템플릿을 정상적으로 사용할 수 있습니다. 외부 레거시 플러그인과 상호 작용하는 것과 같은 특별한 이유가 없으면 이러한 도구는 DOM을 만질 필요가 없음을 의미 할 수 있습니다. –

관련 문제