Angularjs模板:如何有条件地将标记包装在另一个标记中

时间:2014-05-25 14:28:18

标签: angularjs

ngIf有条件地向DOM添加/删除标记。

但是如果我想有条件地将一个标签(例如内容)包装在另一个标签(例如布局)中,那么角度方式最多可以做什么呢?

以下是我在Handlebars中的表现

{{#if layout}} <div class="layout"> {{/if}}
    Content is always here, it is wrapped only if layout is specified
{{#if layout}} </div> {{/if}}

2 个答案:

答案 0 :(得分:2)

这个场景首先想到的是在包装标签上使用ng-class。由于包装标签始终存在于DOM中,因此它并不完全符合您的要求,但您可以根据您的条件在CSS中修改其行为。

答案 1 :(得分:2)

我可能不完全理解你的最终目标,但似乎它是无效的HTML。

无论如何,您最好的选择是编写一个为您构建html的指令。

如果您对自定义指令不满意,那么更简单的工具就是 ngSwitch 。它允许您将一种方式设置为默认值,然后您将根据确定是否要包装布局的表达式切换到另一种方式。

我不喜欢在这种情况下使用ngSwitch,它需要复制一些代码。在这种情况下,它是非常小的。

如果你必须在整个申请过程中做几次,那么在我看来,编写你自己的指令是值得的。