我正在写一个指令,它需要有一个不同的根元素,基于我传递给指令的mode
属性。以下是预期的模板文件:
模板文件:
<div ng-if="mode === 'full'">
<div>
...
</div>
<input (a lot of attributes...)
class="datepicker" />
</div>
<input ng-if="mode === 'short'"
(a lot of attributes...)
class="datepicker" />
但是当然AngularJS抱怨你必须在模板中有一个根元素。
我知道我可以将它们分成2个文件并在templateUrl
内有条件加载(即templateUrl: function(tElem, tAttrs) { if tAttrs.mode === 'full' ...
)。
但在我的情况下,<input class="datepicker" />
是一个具有许多不同属性的元素,在full
和short
模式下都是相同的。理想情况下,我会将input
放在一个单独的指令中,但我觉得这对我的情况来说太过分了。然后将两个结果保存在2个不同的模板中,将导致将共享信息(input
属性)分离为2个单独的文件。在“input
模式short
上更改任何内容的任何人都需要记住在input
模式下对full
进行相同的更改,该模式将驻留在不同的文件中。
问题: 如何在单个模板文件中处理这种情况?
注意:在这种情况下,我真的无法添加单个包装元素(例如<div>
)。这会违反我的布局。