具有ng-show的角度ng-switch不遵守DOM顺序

时间:2013-05-17 15:27:26

标签: angularjs

我从jQuery / Backbone背景来到Angular,所以我是Angular的新手。无论如何,所以我试图根据选择框值显示/隐藏div。我知道的基本知识。

问题在于,使用下面的代码块,即使<div ng-show="designer">是DOM中的最后一个元素,它也会在两个switch-when语句之前显示出来。移动它没有任何区别。

<select ng-model="designer">
  <option value="designerYes">Yes</option>
  <option value="designerNo">No</option>
</select>

<div ng-switch on="designer">
  <div ng-switch-when="designerYes"...>
  <div ng-switch-when="designerNo"...>
  <div ng-show="designer">
</div>

我怀疑问题与事件切换和显示事件被触发的时间有关,但我不确定如何排除故障或解决问题的最佳方法。关于解决方案的任何想法?

更新:解决方案(至少我的情况)是不要混用ng-switch和ng-show。第一个答案是正确的。由于switch语句不在DOM中,因此它们将在已经可用的ng-show div之后附加。

这是答案......

<select ng-model="designer">
  <option value="designerYes">Yes</option>
  <option value="designerNo">No</option>
</select>

<div ng-show="designer == 'designerYes'"...>
<div ng-show="designer == 'designerNo'"...>
<div ng-show="designer">

这将始终在进行选择时显示第3个DIV,并根据值有条件地显示其中一个。

1 个答案:

答案 0 :(得分:1)

在您做出选择之前,最初designer将是未定义的。所以前两个将不会被渲染我猜。你能用其中一个值初始化它,看看是否有帮助?