Ng-switch在ng-repeat内不起作用

时间:2014-03-19 12:18:46

标签: angularjs ng-repeat ng-switch

更改i.typ后,ng-switch不会在以下代码中更新。也许这与ng-repeat oustide开关有关?在页面重新加载时它可以工作,但不能在模型更改时使用。

<div id="sceneCtrl" ng-controller="SceneController">

    <transform id="{{'annotation'+i.ID}}" ng-repeat="i in vm.sharedService.SceneAnnotations">
        <group ng-switch on="{{i.typ}}">
            <transform ng-switch-when="0" > [subtree 0...] </transform>
            <transform ng-switch-when="1" > [subtree 1...] </transform>
        </group>
    </transform>

</div>

2 个答案:

答案 0 :(得分:2)

on="{{i.typ}}"中删除大括号。

请改为尝试:

<group ng-switch on="i.typ">

答案 1 :(得分:2)

我把一个ng-switch看起来像ng-repeat里面的例子放在一起。为了使示例工作,我确实替换了你的变量,但想法和语法是完全相同的:

<div ng-repeat="player in myPlayers">
  <!-- just so you can see the repeat is working normally: -->
  Player: <span class="playername" ng-bind="player.name"></span>

  <!-- here is the switch: -->
  <div ng-switch on="player.gameRole">
    <div ng-switch-when="IT">YOU ARE IT</div>
    <div ng-switch-when="NOT IT">This player is NOT it</div>
  </div>
  <br /><br />
</div>

要查看此消息,请在此处查看一个plunker:http://plnkr.co/edit/0lbqKjlgo1Y8aLNMoGNs?p=preview


关于为什么当变量值发生变化时开关不会改变的另一个问题,可能会出现一些原因。最常见的原因是因为您处于指令或某处“$ scope。$ apply()”未被调用。添加这一行,它应该工作(可能)!

祝你好运!