AngularJS - ng开关和ng单击不在ng重复中

时间:2013-07-17 08:14:35

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click

我希望通过ngSwitch显示列表的元素,但我无法弄清楚如何使用ngRepeat。我已经开始没有列表了,只是为了了解ngSwitch如何工作并告诉你我想做什么,这里有一个帮助你理解的jsFiddle:jdFiffle 1

然后,我尝试使用ngRepeat的列表,但是,无论我尝试做什么,它都不起作用。这是第二个jsFiddle,这次是使用列表:jsFiddle 2

似乎ngClickngSwitchngRepeat内部时无效...我怎样才能让事情有效?提前谢谢!

1 个答案:

答案 0 :(得分:11)

一些问题:

  1. 处理angular-directive时,通常不需要使用{{...}}语法,只需使用 real 值。所以而不是:

    data-ng-click="sw='{{test.name}}'"
    

    使用:

    data-ng-click="sw = test.name"
    

    (请参阅下一点,了解为何这还不够)

  2. ng-repeat使用自己的范围进行翻译,因此以上内容会将sw设置在错误的范围内,请使用:

    data-ng-click="$parent.sw = test.name"
    
  3. 您无法使用ng-switch-when构建ng-repeat,请尝试ng-show/hide尝试:

    <div ng-repeat="test in tests" ng-show="sw == test.name">
    
  4. 演示:http://jsbin.com/uxobot/1/


    但总而言之,我认为第二个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>
    

    演示:http://jsbin.com/elufow/1/