我希望通过ngSwitch
显示列表的元素,但我无法弄清楚如何使用ngRepeat
。我已经开始没有列表了,只是为了了解ngSwitch
如何工作并告诉你我想做什么,这里有一个帮助你理解的jsFiddle:jdFiffle 1
然后,我尝试使用ngRepeat
的列表,但是,无论我尝试做什么,它都不起作用。这是第二个jsFiddle,这次是使用列表:jsFiddle 2
似乎ngClick
和ngSwitch
在ngRepeat
内部时无效...我怎样才能让事情有效?提前谢谢!
答案 0 :(得分:11)
一些问题:
处理angular-directive时,通常不需要使用{{...}}
语法,只需使用 real 值。所以而不是:
data-ng-click="sw='{{test.name}}'"
使用:
data-ng-click="sw = test.name"
(请参阅下一点,了解为何这还不够)
ng-repeat
使用自己的范围进行翻译,因此以上内容会将sw
设置在错误的范围内,请使用:
data-ng-click="$parent.sw = test.name"
您无法使用ng-switch-when
构建ng-repeat
,请尝试ng-show/hide
尝试:
<div ng-repeat="test in tests" ng-show="sw == test.name">
但总而言之,我认为第二个div上不需要ng-switch/ng-repeat
。以下具有相同的效果,可能更具语义性:
<div ng-controller="MyCtrl">
<div class="click">
<div ng-repeat="test in tests" data-ng-click="$parent.active = test">
{{test.name}}
</div>
</div>
<div class="switch">
{{active.text}}
</div>
</div>