1

我从 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,并根据值有条件地显示其他 DIV 之一。

4

1 回答 1

1

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

于 2013-05-17T15:30:17.783 回答