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

teg*_*ggy 26 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>
Run Code Online (Sandbox Code Playgroud)

小智 92

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

<ng-switch on="user">
  <span ng-switch-when="true">One</span>
  <span ng-switch-default>Two</span>
</ng-switch>
Run Code Online (Sandbox Code Playgroud)

这是一个可以玩的玩家:http://plnkr.co/edit/zni6raUWOguhQh9jDiY3

  • 关于这一点需要注意的一点,虽然它没有将`<span />`标签包装在`<div />`中然后将它包装在`<ng-switch />`中,所以如果你想要使用它一个子css选择器,如`body> span`,它不会满足.但是因为这不是一个原始问题 - 没什么大不了的. (9认同)
  • 这是错误的答案,ng-switch无论如何都是div元素 (3认同)
  • 这需要被接受为正确的答案.看到它让我立刻明白为什么我错了.非常感谢你 (2认同)
  • 当`&lt;ng-switch&gt;`出现在父级和子级弹性盒div之间时(Chrome 46),我遇到了这个解决方案的问题。 (2认同)