2013-07-03 4 views
1

템플릿의 내용을 각도 어플리케이션의 데이터에 바인딩하고 싶습니다. 템플릿은 HTML 파일에 저장된 결합 식을 포함한다 : 템플릿의 컨텍스트 및 데이터를 제공AngularJS의 데이터에 템플릿 바인딩

<div> 
    <div class="case-header"> 
     <h3>Case Details</h3> 
    </div> 
    <div class="case-body"> 
     <div> 
      <label>Case Number:</label><div>{{item.CaseNumber}}</div> 
     </div> 
     <div> 
      <label>Name:</label><div>{{item.CandidateName}}</div> 
     </div> 
     ... 
    </div> 
</div> 

요소는 NG 격자의 행이다. 아래 함수에서 현재 행의 데이터를 포함 할 새 범위를 만듭니다. 템플리트의 내용은 html 파일에서 검색되고 제어기가 구성 될 때 특성에 캐시됩니다. 그러나 $ compile 호출은 원하는대로 데이터를 바인딩하지 않습니다. 이 함수는 여전히 바인딩 표현식이있는 템플릿 마크 업을 반환합니다. 나는 두 가지 스타일의 바인딩 표현을 시도했다. $에 대한 호출은 컴파일

$scope.getTooltip = function (row) { 
     var scope = $scope.$new(); 
     scope.item = row.entity; 
     var elem = angular.element($scope.template); 
     var result = $compile(elem)(scope); 
     return result.html(); 
    }; 

documentation대로 힘 올바른 것으로 보인다,하지만 난 내가 뭔가를 잘못 이해해야합니다 같아요.

템플릿에 데이터 값을 어떻게 주입합니까?

Plunker

여기에 재생하는 Plunker입니다.

+0

당신은 전체 코드를 플 런커 또는 바이올린에서 공유 할 수 있습니까 –

+0

위의 주요 기사에서 추가 및 링크되었습니다. –

답변

1

$ compile (scope)은 원래 dom 요소 또는 clone에 대한 참조를 반환하므로 일부 요소에 추가해야합니다. 플 런커를 업데이트했습니다. http://plnkr.co/edit/qatH4XNKPxjPyicur67T?p=preview 그래서 작동하는지 확인하십시오.

+0

감사합니다 @Ajay, 단순한 Plunker에서 작동합니다. 문제를 설명하기에 좋은 시작입니다. 그러나'getTooltip' 함수가 바인딩 된 html 템플릿을 반환하여 함수 이름 자체에 바인딩하여 해당 내용을 주입 할 수있게하려고합니다. 나는 원래 Plunker를 업데이트하여 내가 의미하는 바를 보여 주었다. 컴파일 결과를 DOM 객체에 추가하지 않고 Angular가 데이터를 바인딩하도록하는 방법이 있습니까? –

+0

아니요 지시문을 만들거나 직접 dom에 요소를 추가하여 보간 작업을 수행해야합니다. –

+0

엽기. 왜 그들은 그런 식으로 제한했을까요? –

관련 문제