【发布时间】:2016-01-12 04:20:18
【问题描述】:
这感觉像是模板引擎中相当基本的功能,但我似乎不知何故错过了它。
假设这样的模板:
<a ng-if="icon.link" href="icon.link">
<i ng-class="['fa',icon.icon_class]"></i>
</a>
<span ng-if="!icon.link">
<i ng-class="['fa',icon.icon_class]"></i>
</span>
这将完成我想要的,但缺点是每当我想有条件地使用不同的父元素时,它都需要复制所有子元素。
有什么办法可以做到:
<span ng-if-include-children="!icon.link">
<a ng-if-include-children="icon.link" href="icon.link">
<i ng-class="['fa',icon.icon_class]"></i>
</a>
</span>
基本上,我只是想找出最好的方法来换出容器元素,而不是复制其所有内容。
【问题讨论】:
-
你能分享一个在其他模板引擎中这个常见功能的例子吗?
-
@miensol,我指的是我所做的所有服务器端模板,其中一个简单的 if/else 可以让您交换父元素而无需重复所有子元素。
-
我看到了 2x
if/else。不确定它是否比复制短内容更好。对于较大的模板,提取部分模板并使用ng-include加载它通常是值得的。 -
似乎您正在尝试动态呈现指令,您可以在链接方法中使用
$compile(template)(scope)。 -
感谢您的建议。这个问题出现在更大的模板中,这就是为什么它是一个问题。我认为现在的标准,如果包括孩子在内,将足够好。我也会研究动态指令渲染。我对此并不熟悉。
标签: javascript angularjs