AngularJS使用不带包装器div的ng开关

AngularJS使用不带包装器div的ng开关,angularjs,Angularjs,我希望使用ng开关,因为我不希望不希望显示的其他元素成为DOM的一部分。这就是为什么我没有使用ng hide/ng show。在下面的示例中,我只想让span标记位于DOM中,而不使用ng开关的div包装器。实现这一目标的最佳方式是什么 <div ng-switch on="user"> <div ng-switch-when="true"> <span>One</span> </div> <

我希望使用ng开关,因为我不希望不希望显示的其他元素成为DOM的一部分。这就是为什么我没有使用ng hide/ng show。在下面的示例中,我只想让
span
标记位于DOM中,而不使用ng开关的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>

一个
两个

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

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

一个
两个

这里有一个可以玩的plunker:

由@ChrisAuer提供的解决方案仍然会创建一个包装元素。 好吧,你必须使用custome指令。您可能想使用


如果,我会说使用
ng,如下所示:

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

一个
两个
您可以使用
防止更改html布局 因为
不像
,所以它不会占用任何空间

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

一个
两个

您是否尝试在跨度上放置ng开关?是的,我尝试在跨度上放置ng开关,但仍然存在ng开关的div包装。angular ui项目有一个ui if指令,可能对您有效。这需要被接受为正确答案。看到它让我立刻明白我为什么错了。非常感谢您注意到这一点,尽管它没有将
标记包装在
中,但它确实将其包装在
中,因此如果您想要使用子css选择器,例如
body>span
,它将无法满足您的要求。但由于这不是一个最初的问题——没什么大不了的。当
介于父和子flex box div(Chrome 46)之间时,我遇到了这个解决方案的问题。这是一个错误的答案,ng switch无论如何都可以作为一个div元素使用。是的,ng if对我来说也是一个更好的方法。但是我不确定在提出这个问题的那天是否已经有了angularJS的1.2.xx版本。ng如果在1.12.xx版本中是新的不正确,它不会创建换行div。至少在我的angular版本中是这样
<div>
    <div ng-if="user==true">
        <span>One</span>
    </div>
    <div ng-if="user==false">
        <span>Two</span>
    </div>
</div>
<span ng-switch="user">
  <span ng-switch-when="true">One</span>
  <span ng-switch-default>Two</span>
</span>