AngularJS : 컴파일되기 전에 ng-repeat 지시문 템플릿을 얻는 방법은 무엇입니까?

user1140313

중첩 된 콘텐츠를 포함하는 내 사용자 지정 지시문 내에서 사용되는 ng-repeat 지시문에 대한 초기 html 템플릿을 얻으려고합니다. 그러나 대신 지시문 내부에 설정된 실제 html 텍스트는 이미 컴파일 된 ng-repeat 지시문 또는 다음과 같은 주석을 얻습니다.

<!-- ngRepeat: item in items -->

나는 이미 github 에서 그 질문을 던졌지 만 불행히도 대답이 명확하지 않았습니다. 컴파일되기 전에 ng-repeat 지시문 템플릿을 얻는 방법이 있습니까?

다음은 내가 달성하려는 간단한 예입니다 (및 plnkr ).

app.directive('parent', function() {
  return {
    restrict:'E',
    template:'<div ng-transclude></div>',
    transclude: true,
    priority: 1001,
    scope: true,
    compile: function(element, attrs) {
      console.log(element.html());
      console.log(element);
    }
  };
});
<parent>
  <div ng-repeat="item in items">
    {{item}}
  </div>
</parent>
새로운 개발

ng-repeat 디렉티브에는`transclude : "element"가 있으므로 컴파일 될 때 전체 요소가 DOM에서 꺼내지고 (교체 준비 과정에서) 주석이 남습니다.

따라서 첫 번째 사람 console.log(element.html())은 자신의 지시에 대한 초월이 일어나지 않았기 때문에 아무것도 볼 수 없습니다.

그러나 링크 타임에 내부 HTML을 살펴 보더라도 ngRepeat는 컴파일되었지만 아직 그 초월은 일어나지 않을 것입니다. 이 때, 나중에 발생 scope.$watchCollectionngRepeat화재.

따라서 콘텐츠를 보는 유일한 방법은 ngRepeat. parent지시문을 만들고 terminal: true내용을 검사 한 다음 수동으로 다시 컴파일 할 수 있습니다.

우선 순위가 더 높은 반복 가능한 요소에서 실행되는 지시문을 추가 ngRepeat하고 내용을 가져올 수도 있습니다.

( "ngRepeat"이름을 재사용 할 수도 있습니다 )

app.directive("ngRepeat", function(){
  return {
    require: "?^parent", // optionally require your parent
    priority: 1010,
    compile: function(tElem){
      var template = tElem.html();
      return function link(scope, element, attrs, ctrls){
         var parentCtrl = ctrls;

         if (!parentCtrl) return;

         // hand it off to the parent controller
         parentCtrl.setTemplate(template);
      }
    }
  }
})

데모

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

transcluded 템플릿 내에서 ng-repeat 항목을 얻는 방법은 무엇입니까?

분류에서Dev

ng-repeat 입력 angularjs의 값을 얻는 방법은 무엇입니까?

분류에서Dev

내 지시문이 테이블을 검사하기 전에 ng-repeat가 테이블을 채우는 지 확인하는 방법은 무엇입니까?

분류에서Dev

중첩 된 ng-repeat 지시문에서 제어문 (if 문)을 사용하는 방법은 무엇입니까?

분류에서Dev

* .cpp 파일에서 템플릿 전문화 방법을 구현하는 방법은 무엇입니까?

분류에서Dev

객체의 값을 기반으로 ng-repeat에서 요소를 표시하거나 숨기는 방법은 무엇입니까? Angularjs

분류에서Dev

AngularJS 지시문 템플릿 내부에서 이벤트를 캡처하는 방법은 무엇입니까?

분류에서Dev

AngularJS 지시문 템플릿 내부에서 이벤트를 캡처하는 방법은 무엇입니까?

분류에서Dev

AngularJS에서 지시문을 '파괴'하는 방법은 무엇입니까?

분류에서Dev

angularjs에서 ng-ckeditor 지시문을 사용하는 방법은 무엇입니까?

분류에서Dev

AngularJS에서 ng-repeat의 스크롤 위치를 유지하는 방법은 무엇입니까?

분류에서Dev

ng-repeat 내에서 angularJs로 송장을 생성하는 방법은 무엇입니까?

분류에서Dev

다른 템플릿에서 필터 쿼리를 가져 오는 한 템플릿에서 ng-repeat를 사용하는 방법은 무엇입니까?

분류에서Dev

AngularJS 템플릿의 중첩 된 JSON 배열에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

장고 템플릿에 img 파일을 표시하는 방법은 무엇입니까?

분류에서Dev

WordPress WPGlobus : 템플릿 파일에서 지역화 된 URL을 생성하는 방법은 무엇입니까?

분류에서Dev

프로젝트가 템플릿에서 생성되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

ng-repeat 지시문을 사용하여 성능 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

전처리 기와 컴파일러 지시문을 구별하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트의 ng-repeat에서 동적 ng-model을 얻는 방법은 무엇입니까?

분류에서Dev

AngularJS : ng-click에서 여러 INT 값을 문자열로 전달하는 방법은 무엇입니까?

분류에서Dev

angularjs 템플릿에서 컨트롤러로 값을 전달하는 방법은 무엇입니까?

분류에서Dev

Q : AngularJs에서 매개 변수로 함수를 실행하기 위해 ng-repeat onClick을 사용하는 방법은 무엇입니까?

분류에서Dev

Apache Velocity 템플릿 lang에서 확장자없이 파일 이름을 얻는 방법은 무엇입니까?

분류에서Dev

Django 템플릿에서 예쁜 기간을 표시하는 방법은 무엇입니까?

분류에서Dev

AngularJS : 컨트롤러에서 지시문 입력 필드 모델 값을 얻는 방법은 무엇입니까?

분류에서Dev

나뭇 가지 템플릿에서 메일을 보내는 방법은 무엇입니까?

분류에서Dev

Blaze에서 템플릿을 캐시하는 방법은 무엇입니까?

분류에서Dev

Template :: Toolkit에서 템플릿을 컴파일하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    transcluded 템플릿 내에서 ng-repeat 항목을 얻는 방법은 무엇입니까?

  2. 2

    ng-repeat 입력 angularjs의 값을 얻는 방법은 무엇입니까?

  3. 3

    내 지시문이 테이블을 검사하기 전에 ng-repeat가 테이블을 채우는 지 확인하는 방법은 무엇입니까?

  4. 4

    중첩 된 ng-repeat 지시문에서 제어문 (if 문)을 사용하는 방법은 무엇입니까?

  5. 5

    * .cpp 파일에서 템플릿 전문화 방법을 구현하는 방법은 무엇입니까?

  6. 6

    객체의 값을 기반으로 ng-repeat에서 요소를 표시하거나 숨기는 방법은 무엇입니까? Angularjs

  7. 7

    AngularJS 지시문 템플릿 내부에서 이벤트를 캡처하는 방법은 무엇입니까?

  8. 8

    AngularJS 지시문 템플릿 내부에서 이벤트를 캡처하는 방법은 무엇입니까?

  9. 9

    AngularJS에서 지시문을 '파괴'하는 방법은 무엇입니까?

  10. 10

    angularjs에서 ng-ckeditor 지시문을 사용하는 방법은 무엇입니까?

  11. 11

    AngularJS에서 ng-repeat의 스크롤 위치를 유지하는 방법은 무엇입니까?

  12. 12

    ng-repeat 내에서 angularJs로 송장을 생성하는 방법은 무엇입니까?

  13. 13

    다른 템플릿에서 필터 쿼리를 가져 오는 한 템플릿에서 ng-repeat를 사용하는 방법은 무엇입니까?

  14. 14

    AngularJS 템플릿의 중첩 된 JSON 배열에서 값을 얻는 방법은 무엇입니까?

  15. 15

    장고 템플릿에 img 파일을 표시하는 방법은 무엇입니까?

  16. 16

    WordPress WPGlobus : 템플릿 파일에서 지역화 된 URL을 생성하는 방법은 무엇입니까?

  17. 17

    프로젝트가 템플릿에서 생성되는 것을 방지하는 방법은 무엇입니까?

  18. 18

    ng-repeat 지시문을 사용하여 성능 문제를 해결하는 방법은 무엇입니까?

  19. 19

    전처리 기와 컴파일러 지시문을 구별하는 방법은 무엇입니까?

  20. 20

    자바 스크립트의 ng-repeat에서 동적 ng-model을 얻는 방법은 무엇입니까?

  21. 21

    AngularJS : ng-click에서 여러 INT 값을 문자열로 전달하는 방법은 무엇입니까?

  22. 22

    angularjs 템플릿에서 컨트롤러로 값을 전달하는 방법은 무엇입니까?

  23. 23

    Q : AngularJs에서 매개 변수로 함수를 실행하기 위해 ng-repeat onClick을 사용하는 방법은 무엇입니까?

  24. 24

    Apache Velocity 템플릿 lang에서 확장자없이 파일 이름을 얻는 방법은 무엇입니까?

  25. 25

    Django 템플릿에서 예쁜 기간을 표시하는 방법은 무엇입니까?

  26. 26

    AngularJS : 컨트롤러에서 지시문 입력 필드 모델 값을 얻는 방법은 무엇입니까?

  27. 27

    나뭇 가지 템플릿에서 메일을 보내는 방법은 무엇입니까?

  28. 28

    Blaze에서 템플릿을 캐시하는 방법은 무엇입니까?

  29. 29

    Template :: Toolkit에서 템플릿을 컴파일하는 방법은 무엇입니까?

뜨겁다태그

보관