3

我想显示一个列表的元素感谢ngSwitch,但我不知道如何处理ngRepeat。我已经开始做没有列表,只是为了了解ngSwitch如何工作,并告诉你我想做什么,这里是一个jsFiddle,这将有助于你明白:jdFiffle 1AngularJS - ngSwitch和ngClick不能在ngRepeat工作

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

似乎ngClickngSwitch当他们是ngRepeat内不工作......我该怎么做才能使事情的工作?提前致谢!

回答

11

一些问题:

  1. 当角指令处理,你通常不需要使用{{...}}语法,只需使用真正值。因此,而不是:

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

    使用:

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

    (见为什么这是不够的下一个点)

  2. ng-repeat使用它自己的范围与transclusion,所以以上将sw设置在错误的范围内,使用:

    data-ng-click="$parent.sw = test.name" 
    
  3. 你不能ng-repeat建立ng-switch-when的,尽量ng-show/hide而不是尝试:

    <div ng-repeat="test in tests" ng-show="sw == test.name"> 
    

演示: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/

+0

非常感谢,这正是我需要的! :) – Sylla