AngularJS使用ng-switch而不使用包装器div

时间:2013-05-06 20:53:33

标签: angularjs

我想使用ng-switch,因为我不希望我不希望显示的其他元素成为DOM的一部分。这就是我没有使用ng-hide / ng-show的原因。在下面的示例中,我希望只有span标记位于DOM中而没有来自ng-switch的div包装器。实现这一目标的最佳方法是什么?

<div ng-switch on="user">
    <div ng-switch-when="true">
        <span>One</span>
    </div>
    <div ng-switch-when="false">
        <span>Two</span>
    </div>
</div>

4 个答案:

答案 0 :(得分:90)

您可以将ng-switch指令用作自定义元素,而不是首先指定div。例如:

<ng-switch on="user">
  <span ng-switch-when="true">One</span>
  <span ng-switch-default>Two</span>
</ng-switch>

以下是一名玩家:http://plnkr.co/edit/zni6raUWOguhQh9jDiY3

答案 1 :(得分:1)

@ChrisAuer提供的解决方案仍然会创建一个包装元素。 AFAIK你必须使用custome指令。您可能想要使用angular-ui if

<div ui-if="user">
    <span>One</span>
</div>
<div ui-if="!user">
    <span>Two</span>
</div>

或许,在您的情况下,您可以使用仅隐藏(ng-show)元素的ng-hidedisplay:none - 它们不会从{{1 }}

DOM

答案 2 :(得分:1)

我会说使用ng-if,就像这样:

<div>
    <div ng-if="user==true">
        <span>One</span>
    </div>
    <div ng-if="user==false">
        <span>Two</span>
    </div>
</div>

答案 3 :(得分:1)

您可以使用<span>来防止html布局更改 因为<span>不像<div>,所以不会占用任何空间。

<span ng-switch="user">
  <span ng-switch-when="true">One</span>
  <span ng-switch-default>Two</span>
</span>