javascript - Angular ng-repeat - 跨多个循环的唯一 $index

标签 javascript angularjs loops angularjs-ng-repeat

我使用 ng-repeat 循环遍历我想要打印编号标题的对象数组。

例如:

Controller

var cars = [
    {make:'ford',model:'mustang'},
    {make:'ford',model:'fusion'},
    {make:'bwm',model:'x5'},
    {make:'honda',model:'civic'},
    {make:'honda',model:'accord'},
    {make:'toyota',model:'camry'},
    {make:'honda',model:'crv'},
];

查看

<div ng-repeat="car in cars" ng-show="car.make=='ford'">
    <h1>Fords:</h1>
    <div><b>{{$index}})</b> {{car.model}}</div>
</div>

<div ng-repeat="car in cars" ng-show="car.make=='honda'">
    <h1>Hondas:</h1>
    <div><b>{{$index}})</b> {{car.model}}</div>
</div>

预期输出

Fords:
0) mustang
1) fusion

Hondas:
0) civic
1) accord
2) crv 

实际输出

Fords:
0) mustang
1) fusion

Hondas:
3) civic
4) accord
6) crv 

换句话说,在每个循环中 $index 维护对源数组的引用。我认为这是有道理的,但我认为 $index 的目的是计算给定循环范围内的迭代次数?

如何使用 $index (或其他东西)来实现我的预期输出

最佳答案

一个简单的解决方案是创建一个过滤数组,该数组仅返回匹配的元素。然后您可以正确使用 $index 来打印订购号。

<body ng-app="textInputExample">
  <script>
    angular.module('textInputExample', [])
      .controller('ExampleController', ['$scope', function($scope) {
        var cars = [{
          make: 'ford',
          model: 'mustang'
        }, {
          make: 'ford',
          model: 'fusion'
        }, {
          make: 'bwm',
          model: 'x5'
        }, {
          make: 'honda',
          model: 'civic'
        }, {
          make: 'honda',
          model: 'accord'
        }, {
          make: 'toyota',
          model: 'camry'
        }, {
          make: 'honda',
          model: 'crv'
        }, ];
        $scope.cars = cars;
        $scope.filteredcars = function(make){
           return $scope.cars.filter(function(e) { return e.make === make });
        };

      }]);
  </script>
  <div ng-controller="ExampleController">
    <div ng-repeat="car in filteredcars('honda')">
      <h1>Hondas:</h1>
      <div><b>{{$index}})</b> {{car.model}}</div>
    </div>
  </div>
</body>

关于javascript - Angular ng-repeat - 跨多个循环的唯一 $index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172167/

相关文章:

javascript - 如何在 Backbone.js 的 Router.routes 中绑定(bind)外部方法

java - 在Java中,当捕获异常时,返回到for循环

javascript - 如何按各自的组号对数组中的对象进行分组

javascript - Angular Translate 有时不会通过一次性绑定(bind)进行翻译

loops - 可能的循环不变式

java - 在 while 循环(或 for 循环)内创建一个数组,然后在外部使用该数组

javascript - WordPress:向古腾堡组 block 添加自定义样式

javascript - 基本 Jquery - 淡出/淡入

javascript - Dojo 无参数构造函数调用带参数的基础构造函数

javascript - AngularJS 中的场景测试