아마도 ngSwitch
과 ngInclude
의 조합을 사용할 수 있습니다. 처음 가 edittemplates
을 가지고
<section ng-switch on='editMode'>
<!-- editing case, leave src
<div ng-switch-when='true'>
<div ng-include src='edittemplates.sectionFoo'></div>
</div>
<!-- show case -->
<div ng-switch-when='false'>
<!-- show some stuff -->
</div>
</section>
일반적으로 ng-switch
여전히 모든 DOM을 컴파일하지만, 트릭은 여기에있을 것입니다 : 대신 ng-show
의, 처리해야 할 부분에 대한
, ng-switch
사용 객체 빈 키로 시작 :
App.controller('Foo', function($scope) {
$scope.edittemplates = {
sectionFoo: ''
};
});
을 그리고 나중에, 당신이 그 템플릿 값을 입력, 편집 모드로 전환 할 때 :
$scope.edit = function() {
$scope.editMode = true;
if ($scope.edittemplatesLoaded) return; // Don't set these twice
$scope.edittemplates.sectionFoo = 'sectionFoo.html';
$scope.edittemplates.sectionBar = 'sectionBar.html';
// etc.
$scope.edittemplatesLoaded = true;
};
src
속성은 처음에는 비어 있기 때문에 처음에는 컴파일 할 것이 없습니다.
나는 이것을 아직 시도하지 않았지만, 아직 그럴 필요는 없지만 작동해야합니다.
그건 영리한 생각입니다! 누군가가 더 간단한 해결책을 제시하지 않는다면 나는 그 계획을 발표 할 것입니다. 이봐 요, 그 생각이 들었습니다 ... noCompile = "true"와 같은 지시어를 만들면 재귀 적 강하를 어떻게 든 방지 할 수 있습니까? 그런 다음 준비가되면 false로 전환 할 수 있습니까? 음 ... –
예, 지시어 정의 객체에'terminal : true'를 추가하여 컴파일을 중단 할 수 있다고 생각합니다. – markmarijnissen