2013-10-12 3 views
21

주제를 벗어난 문제로 인해 다시 작성합니다.angularjs : 지시어 템플릿을 다시 렌더링/완전 새로 고침

드롭 다운에 대한 지시문을 작성했습니다. 이 지시문을 워크 플로우의 일종으로 두 번 사용하고 있습니다. 첫 번째 드롭 다운은 변경 작업에 의해 두 번째 모델의 새로 고침을 트리거합니다. 모델이 올바르게 업데이트 되더라도 뷰는 그렇지 않습니다. 드롭 다운에서 항목을 여러 번 선택하면 두 번째 드롭 다운에 새로운 항목이있는 이전 항목이 표시되지만 각도 모델의 console.log()는 올바르지 만

보기에 무한 재귀가 있습니다. 뷰가 완전히 새로 고쳐지지 않는 이유 http://plnkr.co/edit/jera17uCluGsFs8o5hRG?p=preview

내가 이해하지 않았다

템플릿 코드를 보여주는 내 초기 plunkr이 있습니다 : 사용 자체 그것에 대해 재귀를 수행하는 NG/템플릿의 ID로 NG를-포함 ?

업데이트 예정

종류와 관련, 알렉스

+0

Plunker/jsFiddle 스크립트를 제공 할 수 있습니까? –

+0

나는 똑똑한 곳에서 일할 수 없었다. 그러나 기본 코드는 거기에있다. ... – sp33c

+0

http://plnkr.co/edit/jera17uCluGsFs8o5hRG vissible은 두 번째 드롭 다운이며, 첫 번째 드롭 다운 상태 ... 모델이 변경 될 때마다 모델이 정확하지만 잘못된 렌더링이 발생합니다. 무한 중첩 문제입니다. 일반 각도 코드로 작동합니다. – sp33c

답변

36

일반적으로 내가하는 일은 △ ▽를 사용하여-경우 기본적으로 지시어는 angularui 팀에 의해 문이 그래서이 지시어는 또한 그 요소에 넣어 말할 수 있습니다 경우 뭔가 같은 :

<div ui-if="mydata.prop" my-custom-directive></div> 

myData.prop 변경이나 내가 잠시 널 (null) 다음 제거하고 다시 내 지시를 평가 후면의 원인이 다시 DOM에 내 HTML 지시어를 transclude 것을 다시 적용을 설정 한 경우이 방법.

+3

은 비슷한 경우 강제로 다시 렌더링 하시겠습니까? – sp33c

+0

지시문에서 ng/template을 사용하기 때문에 캐시 문제 일 수 있습니까? – sp33c

+1

ng-if가 동일한 방법으로 작동하는지 확실하지 않습니다. Angular는 diff 방식으로 구현했습니다. 기본적으로 ui-if는 dom을 섀도 잉하기 때문에 작동합니다. 그런 다음 다시 컴파일하여 다시 컴파일합니다. – btm1

관련 문제