2016-09-15 5 views
0

예를 들어 다음과 같은 템플릿이 있습니다.AngularJS - 래퍼없이 템플릿을 포함하는 방법

template.html :

<div>div1</div> 
<div>div2</div> 

난 아무데도 내가 원하는 래퍼없이 포함 할, 그래서 결과는 다음과 같이이다 : 그것은 있기 때문에

<body> 
. 
. 
<div>div1</div> 
<div>div2</div> 
. 
. 
</body> 

내가 ng-include을 사용할 수 없습니다 래퍼 <ng-include>.

replace:true으로 지시문을 만들려고했으나 템플릿에 루트 요소가 하나만 있어야한다고 오류가 발생했습니다.

replace:true이없는 주석 지시문이면 템플릿이 표시되지 않습니다.

어떻게해야합니까? 래퍼가 레이아웃을 엉망으로 만들 것이기 ​​때문에 나는 이것을 필요로한다.

+0

당신 가능성과 그들이 옵션이 아닌 이유를 이미 지정했습니다. 이것은 지시어를 사용하는 방법이 아닙니다. 현재 수행중인 작업에 따라 현재 레이아웃/스타일을 수정하여 해결할 수있는 XY 문제 일 수 있습니다. – estus

답변

0

이 시도 :

여기
app.directive('i', ['$interpolate', function($interpolate) { 
    return { 
    scope: { 
     i: '<' 
    }, 
    template: '<div>{{ i.text1 || \'DIV1\' }}</div><div>{{ i.text2 || \'DIV2\' }}</div>', 
    link: function (scope, element, attrs) { 
     element.after($interpolate(element.html())(scope)); 
     element.remove(); 
    } 
    }; 
}]); 

이 통과되지 않을 경우, 인쇄 할 plunker http://plnkr.co/edit/hRHMcvTfC2BNETO64SnW?p=preview 텍스트 변수를 전달할 수 있습니다

입니다 - 인쇄됩니다 devault 'DIV1'와 'DIV2을'

+0

일종의 해킹처럼 보이지만 작동합니다. 감사! – Shawn

0

레이아웃/스타일을 수정해야합니다. 사용되지 않는 각도 지정 문에는 루트 요소가 하나만 있어야하므로 replace:true을 사용하지 않는 것이 좋습니다.

관련 문제