2016-09-15 93 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,因为它的弃用和角度指令只能有一个根元素。

相关问题