2014-09-24 1 views
1

ng-controller이있는 조건부 ng-include 지시문이 있지만 조건이 true 일 때 컨트롤러가 실행되지 않은 것처럼 보입니다.
목표는 조건이 충족 될 때만 템플릿을 포함하고 TypeError: Cannot call method 'insertBefore' of null issue을 피하는 것입니다. 예를 들어AngularJS의 ng-controller와 함께 조건부 포함

는 : myContent.imgList가 데이터로 가득

<div ng-include src="myContent.imgList ? 'ui/image-list.html' : null" ng-controller="ImgListSubCtrl"> 
</div> 

, 나는 image-list.html 템플릿이 DOM에 추가하고 ImgListSubCtrl 실행을 기대하지만, 그렇지 않습니다.

이것은 예상되는 동작입니까? 저는 Angular 1.2.17의 Ionic Framework를 사용하고 있습니다.

감사합니다.

답변

2

추가 설명을 환영하지만 이미 설명을 발견했습니다. http://codepen.io/anon/pen/FnojD?editors=101
첫 번째 사람이 올바르게 표시하지만, 임의의 개수를 표시하지 않는 경우 포함

다음 Codepen는 한 행동 (이온 워크 1.0.0-beta12)에서 용액을 나타낸다.

ng-controller와 함께 ng-include를 사용하는 경우, 컨트롤러 만 ng-include src 표현 null로 평가하는 경우에도, 한 번 실행되는 것 같습니다.
템플릿이 실제로 포함될 때 (ng-include srcnull이 아닐 때) 실행하려면 조건부 ng-include을 피하고 ng-if 블록으로 감싸서 전체 요소가 동적으로 다시 만들어집니다. 위의 Codepen. 질문의 예에서
:

<div ng-if="myContent.imgList"> 
    <div ng-include src="'ui/image-list.html'" ng-controller="ImgListSubCtrl"> 
    </div> 
</div> 

는 나는 그것이 도움이되기를 바랍니다.