有条件地更改AngularJS指令模板中的根元素

时间:2016-02-24 12:47:32

标签: angularjs angularjs-directive angularjs-templates

我正在写一个指令,它需要有一个不同的根元素,基于我传递给指令的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" />是一个具有许多不同属性的元素,在fullshort模式下都是相同的。理想情况下,我会将input放在一个单独的指令中,但我觉得这对我的情况来说太过分了。然后将两个结果保存在2个不同的模板中,将导致将共享信息(input属性)分离为2个单独的文件。在“input模式short上更改任何内容的任何人都需要记住在input模式下对full进行相同的更改,该模式将驻留在不同的文件中。

问题: 如何在单个模板文件中处理这种情况?

注意:在这种情况下,我真的无法添加单个包装元素(例如<div>)。这会违反我的布局。

0 个答案:

没有答案