2014-01-29 2 views
0

에 대한 서비스 mechanizm 같은 술집/하위를 사용할 필요가 있습니까이 내 외부 지시어의 템플릿 파일은 다음과 같습니다내가 지시 'comminucation

<div class="outerDirective"> 
    <span>{{imgLoadStatus}}</span> 

    <imgDirective class="innerDirective"> 
     <img src="img/src.jpg"/> 
    </imgDirective> 

</div> 

당신은 내가 두 개의 중첩 지침을 볼 수 있듯이. 하나는 이미지를, 다른 하나는로드 상태를 표시합니다. outer 지시어의 $ scope 변수 imgLoadStatus $을 (를) 업데이트해야합니다.

내가 Pub/Sub 서비스의 일종으로 이것을 관리 할 수 ​​있다는 것을 알고 있지만, 나는 이런 종류의 일을 위해 각도 방식으로 빌드를 작성하고있다. 아니면 다른 방법을 선호합니까?

+0

단지'require'를 사용하십시오 : http://stackoverflow.com/questions/15672709/how-to-require-a-controller-in-an-angularjs-directive – akonsu

+0

@akonsu 괜찮 으면 좋겠지 만 더 많은 예제가 필요합니다. 이 점을 완전히 이해하십시오. – Lupus

+1

http://stackoverflow.com/a/21292184/149060 -이 예제의 중첩 범위는 여기에있는 중첩 된 지시문과 매우 비슷합니다. –

답변

1

내부 지시어의 정의 안에 "범위"속성을 정의하려고합니다. 당신은 당신의 내면-지시를 호출하여 외부 지침의 템플릿의 내부

angular.module(...).directive(..., ...function() { 

    var innerDirective = { 
     templateUrl : ..., 

     scope : { 
      loadingState : "=" 
     }, 

     link : function (scope, el, attrs, ctrl) { 
      scope.update = function() { 
       scope.loadingState.current += 1; 
      }; 
     } 
    }; 

    return innerDirective; 

, 당신은 "로드 상태"속성을 추가하고 그것을 바깥 지침에서 범위 속성을 전달합니다. // 외부 지시어에 : // $ scope.loading.current = 0; // $ scope. $ watch ("loading.current", function (newVal) {$ scope.updateView (newVal);});

loadingState : "="은 내부 범위와 외부 범위 간의 양방향 데이터 바인딩입니다. 내부 범위의 이름은 HTML에서 예상하는 속성의 이름입니다 (HTML에 이제 생성자 매개 변수가 있음).

이 아니고이 아닌 경우는 부모와 자식 만 이동합니다.
ngRepeat 내부 지시문을 만들려고하는 것과 같습니다.
또는 ngIf를 사용하여 하위 지시문을 추가/삭제하는 경우.

나는 이것이 문서화 된 동작이라고 생각하지 않지만, 현재 동작이라고 생각합니다.

+0

나는 내부 지시어를 "ngRepeating"하고있다. 어쨌든 고맙습니다. – Lupus