2017-02-23 3 views
-1

이전에 잘못된 질문 형식으로 죄송합니다. 변경이 지금컴파일 링 문자열 htmlusing 각도 컴파일이 작동하지 않습니다.

내가 필요한 DIV를 렌더링 할 ngrepeat를 사용하는 HTML 문자열을 가지고 .. 여기

var templateHTML = "<div ng-repeat='entity in createCtrl.finalCCList'>\ 
         <span>{{entity.name}}</span>\ 
        </div>"; 

"createCtrl.finalCCList"는 이름과 ID 속성이 엔티티 객체의 목록이 그 안에. 지금 나는이 사용하여 컴파일 할 때 -
var compiledTemplateHTML = $compile(templateHTML)($scope); 
      if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
       return compiledTemplateHTML[0].outerHTML; 
      } 
      else { 
       return ""; 
      } 

내가 아무 것도 얻을 수 없습니다. 반면 나는 $ scope.createCtrl.finalCCList가 필수 값을 가지고 있는지 확인했다.

여기에 아무 것도 없습니다.

+1

일부 코드는 정말 도움이 될 것입니다. 지금까지 무엇을 했습니까? 당신의 지시어 코드는 무엇입니까? 그리고 html? 지침을 어떻게 사용합니까? – lealceldeiro

+0

@AsielLealCeldeiro 업데이트 됨. 미안합니다. – OLDRomeo

+0

당신이 여기서 무엇을하려고하는지 아직도 명확하지 않습니다. 우선, 왜'$ compile '을 사용하려고합니까? 이 작업을 수행하는 데는 거의 이유가 없으며 거의 ​​항상 코드를 구성하는 데 더 좋은 방법입니다. 둘째, 나는'$ compile'이 배열을 반환한다고 생각하지 않는다. – Claies

답변

0

확인. 많은 연구가 끝난 후 문제는 컴파일 후 시간이 걸리는 문자열 html 내부의 ng-repeat에 의해 렌더링 된 DOM이라는 것을 알았고 완료되기 전에 할당했습니다. 타임 아웃에서 할당을 사용하면 정상적으로 작동합니다.

그래서 대신 this-

var compiledTemplateHTML = $compile(templateHTML)($scope); 
     if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
      return compiledTemplateHTML[0].outerHTML; 
     } 
     else { 
      return ""; 
     } 

나는 반환하지 오전하지만 $ 제한 시간에 범위에

var compiledTemplateHTML = $compile(templateHTML)($scope); 
     if (compiledTemplateHTML && compiledTemplateHTML[0]) { 
      $timeout(function() { 
       createCtrl.isHeaderContent = compiledTemplateHTML[0].outerHTML; 
      }, 0); 
     } 

감사를 할당.