如何在angularjs

时间:2015-05-16 07:42:28

标签: angularjs ng-switch

我试图使用ng-switch显示一些内容:

<div ng-app ng-controller="ctrl" >
    <div ng-repeat="list in statusList">
      <p ng-switch on="list">
        <span ng-switch-when="incorrect"> 
        i am incorrect
        </span>
        <span ng-switch-when="stuff">
        i am  stuff
        </span>
        <span ng-switch-when="wrong">
        i am  wrong
        </span>
        <span ng-switch-default>
        Correct
        </span>
      </p>
    </div>
</div>

控制器

function ctrl($scope){
    $scope.statusList=["incorrect","wrong","stuff"];
}

获得如下输出:

  

我不对

     

我错了

     

我是东西

但我需要按照我指定的顺序显示输出。即。

  

我不正确   我是东西   我错了

我该怎么做,一点是我们不应该改变控制器中的顺序。

2 个答案:

答案 0 :(得分:0)

您可以按功能创建自定义顺序,例如Using Django models in external python script

rand(10000,99999)

您可以按字母顺序排序(使用过滤器),但我不推荐它,因为您可能会添加不按字母顺序排序的新元素。

答案 1 :(得分:0)

ng-repeat迭代使用列表的顺序。您可以定义自定义过滤器以根据需要对列表进行排序,也可以使用其他方法:

定义'包含'过滤器,如果数组包含元素,则返回true

.filter('contains', [function() {
    return function(array, element) {
          return array.indexOf(element) > -1;
    }
}])

使用ng-ifs作为模板(不重复):

<div ng-if="statusList | contains : 'incorrect'">i am incorrect</div>
<div ng-if="statusList | contains : 'stuff'">i am stuff</div>
<div ng-if="statusList | contains : 'wrong'">i am wrong</div>

这样您就可以定义您想要的任何订单。

Plunkr:http://plnkr.co/edit/yaYodJAVCVQ55KbOrf3A?p=preview