【发布时间】:2014-03-01 05:26:50
【问题描述】:
我正在尝试让 Angular 根据我的数据生成 CSS 滑块。我知道数据在那里并且能够为按钮生成它,但是由于某种原因,代码不会填充 ng-switch-when。当我检查代码时,我看到了两次(我知道这是正确的,因为我只有两个项目):
<div ng-repeat="assignment in assignments" ng-animate="'animate'" class="ng-scope">
<!-- ngSwitchWhen: {{assignment.id}} -->
</div>
我的实际代码:
<div ng-init="thisAssignment='one'">
<div class="btn-group assignments" style="display: block; text-align: center; margin-bottom: 10px">
<span ng-repeat="assignment in assignments">
<button ng-click="thisAssignment = '{{assignment.id}}'" class="btn btn-primary">{{assignment.num}}</button>
</span>
</div>
<div class="well" style="height: 170px;">
<div ng-switch="thisAssignment">
<div class="assignments">
<div ng-repeat="assignment in assignments" ng-animate="'animate'">
<div ng-switch-when='{{assignment.id}}' class="my-switch-animation">
<h2>{{assignment.name}}</h2>
<p>{{assignment.text}}</p>
</div>
</div>
</div>
</div>
</div>
编辑:这就是我试图模仿的,虽然是动态数据。 http://plnkr.co/edit/WUCyCN68tDR1YzNnCWyS?p=preview
【问题讨论】:
-
描述当你点击按钮时你期望在 DOM 中发生什么。从您的代码中不清楚您要做什么。您是否试图维持“选定”的分配?
-
另外,请注意,您在 ng-repeats 中覆盖了变量。我的意思是,在外部块上,您将字符串“一”分配给
assignment,但是在您的转发器块上,您拥有同名的迭代器变量assignment,然后您将其分配给块内。您应该尝试将用于跟踪被选中的属性的名称更改为 selectedAssignment 之类的名称。 -
我认为我已经根据您提到的内容更改了我的代码,但我仍然不太清楚。上面修改的代码不起作用。
-
您在下面阅读我的回答了吗? Ng-switch 用于硬编码(非动态)条件。尝试查看文档,看看其他指令会根据特定条件动态交换 DOM,例如 ng-if。
-
好的。我不确定您最近的评论是否否定了您之前提到的任何内容。我会看看。对此感到抱歉。
标签: angularjs angularjs-ng-repeat ng-switch