2014-11-16 4 views
3

동일한 범위 내에서 동일한 지시어를 적용한 다른 요소를 찾는 방법이 있습니까?동일한 범위 내의 동일한 지시어를 가진 다른 요소를 찾으십니까?

matching input values 지시어를 만들려면이 정보를 사용하고 싶습니다.

나는 모든 같은 지시어를 사용하여 몇 개의 입력과 템플릿이있을 수 있습니다

<div ng-controller="MainCtrl"> 
    <input type="text" same-value> 
    <input type="text" same-value> 
</div> 

은 주로 내가 암호 & 암호를 반복 비교를 위해 이것을 사용합니다,하지만 난이 더 일반적인 지침을 만들고 싶었다.

+0

컨트롤러와 함께 parent 지시문을 사용해야합니다. 필요한 것에 대한 구체적인 정보를 제공해주십시오. –

+0

@IlanFrumer - 내 편집을 참조하십시오 – Iladarsda

답변

2

컨트롤러를 통해 부모 지정 문을 생성하고 자식과 부모간에 통신하거나 인스턴스간에 공유되는 서비스를 만들 수 있습니다.

또 다른 옵션은 같이 지시어 선언 공유 데이터와 기능을 제공하는 것입니다 지침의 하나 개 이상의 인스턴스가

angular.module("whatever").directive("sameValue", function() { 

    var sameValueInstances = [];  

    return { 
     link: function(scope, elem, attr) { 
      sameValueInstances.push(scope); 

      // register listener to remove from array when destroyed.. 


      // do something with the instance array 
      sameValueInstances.forEach(...); 
     } 
    }; 

}); 

하지만, 선언의 하나의 인스턴스 만이있다 지시문 (함수 자체). 선언은 공유되므로 sameValueInstances이 공유됩니다. 각도가 지시어를 인스턴스화하면 지시문을 새로운 범위로 만들고 링크 함수를 호출합니다. 각 인스턴스는 자체 범위를 가지므로 인스턴스에 범위를 지정해야합니다. 그런 다음 우리가 범위에 추가 한 데이터를 사용하여 인스턴스를 식별하고 범위에서 기능을 사용하여 통신 할 수 있습니다.

+0

위의 지시자의 인스턴스가 하나있을 것입니다? 격리 된 범위는 어떻습니까? – Iladarsda

+0

@Iladarsda, 작동합니다, 정확한 메커니즘을 이해하기 어려울 수 있습니다. 나는 설명을 추가했다. –

+0

이것은 의미가 있습니다. 마지막으로있을 법하지 않은 시나리오는 어떻게 자신을 단일 '$ 컨트롤러 범위'로 제한 할 것인가입니다. 예 : 한 페이지에 여러 개의 컨트롤러가있을 때? – Iladarsda

관련 문제